Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Unified Diff: compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java

Issue 10108014: Another case of creating from factory constructors was not taken into account in r6619 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
diff --git a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
index 7decd166a5805cefc8bfe105fab7e8b892e6df27..79e2a5f59d3debb8784428de5848f26866601a18 100644
--- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
+++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
@@ -1218,17 +1218,19 @@ public class TypeAnalyzer implements DartCompilationPhase {
} else {
ClassElement cls = (ClassElement) constructorElement.getEnclosingElement();
// Add warning for instantiating abstract class.
- if (cls.isAbstract() && !constructorElement.getModifiers().isFactory()) {
- typeError(typeName, TypeErrorCode.INSTANTIATION_OF_ABSTRACT_CLASS, cls.getName());
- } else {
- List<Element> unimplementedMembers = findUnimplementedMembers(cls);
- if (unimplementedMembers.size() > 0) {
- StringBuilder sb = getUnimplementedMembersMessage(cls, unimplementedMembers);
- typeError(
- typeName,
- TypeErrorCode.INSTANTIATION_OF_CLASS_WITH_UNIMPLEMENTED_MEMBERS,
- cls.getName(),
- sb);
+ if (!constructorElement.getModifiers().isFactory()) {
+ if (cls.isAbstract()) {
+ typeError(typeName, TypeErrorCode.INSTANTIATION_OF_ABSTRACT_CLASS, cls.getName());
+ } else {
+ List<Element> unimplementedMembers = findUnimplementedMembers(cls);
+ if (unimplementedMembers.size() > 0) {
+ StringBuilder sb = getUnimplementedMembersMessage(cls, unimplementedMembers);
+ typeError(
+ typeName,
+ TypeErrorCode.INSTANTIATION_OF_CLASS_WITH_UNIMPLEMENTED_MEMBERS,
+ cls.getName(),
+ sb);
+ }
}
}
// Check type arguments.

Powered by Google App Engine
This is Rietveld 408576698