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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart

Issue 11293244: Implement --analyze-all option. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Correctly parse metadata Created 8 years, 1 month 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: dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
index f4d43e517453376079a78eee7f87381546285da6..2bd69346dcba964423a29e59b501af20522c7acf 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
@@ -76,6 +76,12 @@ class ResolverTask extends CompilerTask {
TreeElements resolve(Element element) {
return measure(() {
+ if (Elements.isErroneousElement(element)) return null;
+
+ for (MetadataAnnotation metadata in element.metadata) {
+ metadata.ensureResolved(compiler);
+ }
+
ElementKind kind = element.kind;
if (identical(kind, ElementKind.GENERATIVE_CONSTRUCTOR) ||
identical(kind, ElementKind.FUNCTION) ||
@@ -90,6 +96,14 @@ class ResolverTask extends CompilerTask {
identical(kind, ElementKind.FIELD_PARAMETER)) {
return resolveParameter(element);
}
+ if (element.isClass()) {
+ ClassElement cls = element;
+ cls.ensureResolved(compiler);
+ return null;
+ } else if (element.isTypedef() || element.isTypeVariable()) {
+ element.computeType(compiler);
+ return null;
+ }
compiler.unimplemented("resolve($element)",
node: element.parseNode(compiler));
@@ -445,6 +459,9 @@ class ResolverTask extends CompilerTask {
// TODO(johnniwinther): Check matching type variables and
// empty extends/implements clauses.
}
+ for (MetadataAnnotation metadata in element.metadata) {
+ metadata.ensureResolved(compiler);
+ }
}
void checkMembers(ClassElement cls) {
@@ -628,7 +645,7 @@ class ResolverTask extends CompilerTask {
visitorFor(annotation.annotatedElement.enclosingElement);
node.accept(visitor);
annotation.value = compiler.constantHandler.compileNodeWithDefinitions(
- node, visitor.mapping);
+ node, visitor.mapping, isConst: true);
annotation.resolutionState = STATE_DONE;
}));
@@ -1201,8 +1218,12 @@ class ResolverVisitor extends CommonResolverVisitor<Element> {
Element result = scope.lookup(name);
if (!Elements.isUnresolved(result)) {
if (!inInstanceContext && result.isInstanceMember()) {
- error(node, MessageKind.NO_INSTANCE_AVAILABLE, [node]);
- // TODO(johnniwinther): Create an ErroneousElement.
+ compiler.reportMessage(compiler.spanFromNode(node),
+ MessageKind.NO_INSTANCE_AVAILABLE.error([name]),
+ Diagnostic.ERROR);
+ return new ErroneousElement(MessageKind.NO_INSTANCE_AVAILABLE,
+ [name],
+ name, enclosingElement);
} else if (result.isAmbiguous()) {
AmbiguousElement ambiguous = result;
compiler.reportMessage(compiler.spanFromNode(node),

Powered by Google App Engine
This is Rietveld 408576698