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

Unified Diff: compiler/java/com/google/dart/compiler/ast/DartClass.java

Issue 8728001: Support for 'abstract' modifier for class and spec recommended warnings, issue 375 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge. Warning for factory constructor of abstract class. Created 9 years 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/ast/DartClass.java
diff --git a/compiler/java/com/google/dart/compiler/ast/DartClass.java b/compiler/java/com/google/dart/compiler/ast/DartClass.java
index 313949353015f2e6a4576b17a9ad40577c5b8a5c..221c2fc8863627d3ac041a1b1766155d733e6e09 100644
--- a/compiler/java/com/google/dart/compiler/ast/DartClass.java
+++ b/compiler/java/com/google/dart/compiler/ast/DartClass.java
@@ -24,6 +24,7 @@ public class DartClass extends DartDeclaration<DartIdentifier> implements HasSym
private final List<DartTypeNode> interfaces;
private boolean isInterface;
+ private final Modifiers modifiers;
private DartTypeNode defaultClass;
private int hash = -1;
@@ -35,14 +36,23 @@ public class DartClass extends DartDeclaration<DartIdentifier> implements HasSym
public DartClass(DartIdentifier name, DartStringLiteral nativeName,
DartTypeNode superclass, List<DartTypeNode> interfaces,
List<DartNode> members,
- List<DartTypeParameter> typeParameters) {
- this(name, nativeName, superclass, interfaces, members, typeParameters, null, false);
+ List<DartTypeParameter> typeParameters,
+ Modifiers modifiers) {
+ this(name, nativeName, superclass, interfaces, members, typeParameters, null, false, modifiers);
}
public DartClass(DartIdentifier name, DartTypeNode superclass, List<DartTypeNode> interfaces,
List<DartNode> members,
List<DartTypeParameter> typeParameters, DartTypeNode defaultClass) {
- this(name, null, superclass, interfaces, members, typeParameters, defaultClass, true);
+ this(name,
+ null,
+ superclass,
+ interfaces,
+ members,
+ typeParameters,
+ defaultClass,
+ true,
+ Modifiers.NONE);
}
/**
@@ -57,7 +67,8 @@ public class DartClass extends DartDeclaration<DartIdentifier> implements HasSym
DartTypeNode superclass, List<DartTypeNode> interfaces,
List<DartNode> members,
List<DartTypeParameter> typeParameters, DartTypeNode defaultClass,
- boolean isInterface) {
+ boolean isInterface,
+ Modifiers modifiers) {
super(name);
this.nativeName = nativeName;
this.superclass = becomeParentOf(superclass);
@@ -66,12 +77,40 @@ public class DartClass extends DartDeclaration<DartIdentifier> implements HasSym
this.interfaces = becomeParentOf(interfaces);
this.defaultClass = becomeParentOf(defaultClass);
this.isInterface = isInterface;
+ this.modifiers = modifiers;
}
public boolean isInterface() {
return isInterface;
}
+ public Modifiers getModifiers() {
+ return modifiers;
+ }
+
+ public boolean isAbstract() {
+ if (modifiers.isAbstract()) {
+ return true;
+ }
+ for (DartNode node : members) {
+ if (node instanceof DartMethodDefinition) {
+ DartMethodDefinition methodDefinition = (DartMethodDefinition) node;
+ if (methodDefinition.getModifiers().isAbstract()) {
+ return true;
+ }
+ }
+ if (node instanceof DartFieldDefinition) {
+ DartFieldDefinition fieldDefinition = (DartFieldDefinition) node;
+ for (DartField field : fieldDefinition.getFields()) {
+ if (field.getModifiers().isAbstract()) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
public List<DartNode> getMembers() {
return members;
}
« no previous file with comments | « client/dom/src/DOMWrapperBase.dart ('k') | compiler/java/com/google/dart/compiler/backend/js/Normalizer.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698