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

Unified Diff: pkg/kernel/lib/verifier.dart

Issue 2614143003: Restore verifier flags after failed verification. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/verifier.dart
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index bed541706342a9719e87cc246e47823734604c06..b53565dbf74c36d048d89ee3ea8838b96849f6a4 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -18,6 +18,7 @@ class VerifyingVisitor extends RecursiveVisitor {
final Set<TypeParameter> typeParameters = new Set<TypeParameter>();
final List<VariableDeclaration> variableStack = <VariableDeclaration>[];
bool classTypeParametersAreInScope = false;
+ bool isOutline = false;
asgerf 2017/01/06 15:56:26 Please add a short comment.
ahe 2017/01/11 11:39:28 Done.
Member currentMember;
Class currentClass;
@@ -113,23 +114,27 @@ class VerifyingVisitor extends RecursiveVisitor {
}
visitProgram(Program program) {
- for (var library in program.libraries) {
- for (var class_ in library.classes) {
- if (!classes.add(class_)) {
- throw 'Class $class_ declared more than once';
+ try {
+ for (var library in program.libraries) {
+ for (var class_ in library.classes) {
+ if (!classes.add(class_)) {
+ throw 'Class $class_ declared more than once.';
+ }
+ }
+ library.members.forEach(declareMember);
+ for (var class_ in library.classes) {
+ class_.members.forEach(declareMember);
}
}
- library.members.forEach(declareMember);
- for (var class_ in library.classes) {
- class_.members.forEach(declareMember);
- }
- }
- visitChildren(program);
- for (var library in program.libraries) {
- library.members.forEach(undeclareMember);
- for (var class_ in library.classes) {
- class_.members.forEach(undeclareMember);
+ visitChildren(program);
+ } finally {
+ for (var library in program.libraries) {
+ library.members.forEach(undeclareMember);
+ for (var class_ in library.classes) {
+ class_.members.forEach(undeclareMember);
+ }
}
+ variableStack.forEach(undeclareVariable);
}
}
@@ -164,6 +169,9 @@ class VerifyingVisitor extends RecursiveVisitor {
int stackHeight = enterLocalScope();
visitChildren(node.function);
visitList(node.initializers, this);
+ if (!isOutline) {
+ checkInitializers(node);
+ }
exitLocalScope(stackHeight);
classTypeParametersAreInScope = false;
visitList(node.annotations, this);
@@ -448,3 +456,7 @@ class CheckParentPointers extends Visitor {
parent = oldParent;
}
}
+
+void checkInitializers(Constructor constructor) {
+ // TODO(ahe): I'll add more here in other CLs.
+}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698