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

Side by Side Diff: dart/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/VariableResolverVisitor.java

Issue 59073003: Version 0.8.10.4 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, the Dart project authors. 2 * Copyright (c) 2013, the Dart project authors.
3 * 3 *
4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except
5 * in compliance with the License. You may obtain a copy of the License at 5 * in compliance with the License. You may obtain a copy of the License at
6 * 6 *
7 * http://www.eclipse.org/legal/epl-v10.html 7 * http://www.eclipse.org/legal/epl-v10.html
8 * 8 *
9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License 9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express
11 * or implied. See the License for the specific language governing permissions a nd limitations under 11 * or implied. See the License for the specific language governing permissions a nd limitations under
12 * the License. 12 * the License.
13 */ 13 */
14 package com.google.dart.engine.internal.resolver; 14 package com.google.dart.engine.internal.resolver;
15 15
16 import com.google.dart.engine.ast.ASTNode; 16 import com.google.dart.engine.ast.ASTNode;
17 import com.google.dart.engine.ast.ConstructorName; 17 import com.google.dart.engine.ast.ConstructorName;
18 import com.google.dart.engine.ast.FunctionDeclaration; 18 import com.google.dart.engine.ast.FunctionDeclaration;
19 import com.google.dart.engine.ast.FunctionExpression; 19 import com.google.dart.engine.ast.FunctionExpression;
20 import com.google.dart.engine.ast.Label; 20 import com.google.dart.engine.ast.Label;
21 import com.google.dart.engine.ast.MethodInvocation; 21 import com.google.dart.engine.ast.MethodInvocation;
22 import com.google.dart.engine.ast.PrefixedIdentifier; 22 import com.google.dart.engine.ast.PrefixedIdentifier;
23 import com.google.dart.engine.ast.PropertyAccess; 23 import com.google.dart.engine.ast.PropertyAccess;
24 import com.google.dart.engine.ast.SimpleIdentifier; 24 import com.google.dart.engine.ast.SimpleIdentifier;
25 import com.google.dart.engine.element.Element; 25 import com.google.dart.engine.element.Element;
26 import com.google.dart.engine.element.ElementKind; 26 import com.google.dart.engine.element.ElementKind;
27 import com.google.dart.engine.element.ExecutableElement; 27 import com.google.dart.engine.element.ExecutableElement;
28 import com.google.dart.engine.element.LibraryElement;
28 import com.google.dart.engine.element.VariableElement; 29 import com.google.dart.engine.element.VariableElement;
30 import com.google.dart.engine.error.AnalysisErrorListener;
29 import com.google.dart.engine.internal.element.LocalVariableElementImpl; 31 import com.google.dart.engine.internal.element.LocalVariableElementImpl;
30 import com.google.dart.engine.internal.element.ParameterElementImpl; 32 import com.google.dart.engine.internal.element.ParameterElementImpl;
33 import com.google.dart.engine.internal.scope.Scope;
31 import com.google.dart.engine.source.Source; 34 import com.google.dart.engine.source.Source;
32 import com.google.dart.engine.utilities.general.ObjectUtilities; 35 import com.google.dart.engine.utilities.general.ObjectUtilities;
33 36
34 /** 37 /**
35 * Instances of the class {@code VariableResolverVisitor} are used to resolve 38 * Instances of the class {@code VariableResolverVisitor} are used to resolve
36 * {@link SimpleIdentifier}s to local variables and formal parameters. 39 * {@link SimpleIdentifier}s to local variables and formal parameters.
37 * 40 *
38 * @coverage dart.engine.resolver 41 * @coverage dart.engine.resolver
39 */ 42 */
40 public class VariableResolverVisitor extends ScopedVisitor { 43 public class VariableResolverVisitor extends ScopedVisitor {
41 /** 44 /**
42 * The method or function that we are currently visiting, or {@code null} if w e are not inside a 45 * The method or function that we are currently visiting, or {@code null} if w e are not inside a
43 * method or function. 46 * method or function.
44 */ 47 */
45 private ExecutableElement enclosingFunction; 48 private ExecutableElement enclosingFunction;
46 49
47 /** 50 /**
48 * Initialize a newly created visitor to resolve the nodes in a compilation un it. 51 * Initialize a newly created visitor to resolve the nodes in a compilation un it.
49 * 52 *
50 * @param library the library containing the compilation unit being resolved 53 * @param library the library containing the compilation unit being resolved
51 * @param source the source representing the compilation unit being visited 54 * @param source the source representing the compilation unit being visited
52 * @param typeProvider the object used to access the types from the core libra ry 55 * @param typeProvider the object used to access the types from the core libra ry
53 */ 56 */
54 public VariableResolverVisitor(Library library, Source source, TypeProvider ty peProvider) { 57 public VariableResolverVisitor(Library library, Source source, TypeProvider ty peProvider) {
55 super(library, source, typeProvider); 58 super(library, source, typeProvider);
56 } 59 }
57 60
61 /**
62 * Initialize a newly created visitor to resolve the nodes in an AST node.
63 *
64 * @param definingLibrary the element for the library containing the node bein g visited
65 * @param source the source representing the compilation unit containing the n ode being visited
66 * @param typeProvider the object used to access the types from the core libra ry
67 * @param nameScope the scope used to resolve identifiers in the node that wil l first be visited
68 * @param errorListener the error listener that will be informed of any errors that are found
69 * during resolution
70 */
71 public VariableResolverVisitor(LibraryElement definingLibrary, Source source,
72 TypeProvider typeProvider, Scope nameScope, AnalysisErrorListener errorLis tener) {
73 super(definingLibrary, source, typeProvider, nameScope, errorListener);
74 }
75
58 @Override 76 @Override
59 public Void visitFunctionDeclaration(FunctionDeclaration node) { 77 public Void visitFunctionDeclaration(FunctionDeclaration node) {
60 ExecutableElement outerFunction = enclosingFunction; 78 ExecutableElement outerFunction = enclosingFunction;
61 try { 79 try {
62 enclosingFunction = node.getElement(); 80 enclosingFunction = node.getElement();
63 return super.visitFunctionDeclaration(node); 81 return super.visitFunctionDeclaration(node);
64 } finally { 82 } finally {
65 enclosingFunction = outerFunction; 83 enclosingFunction = outerFunction;
66 } 84 }
67 } 85 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 // If we are in some closure, check if it is not the same as where varia ble is declared. 147 // If we are in some closure, check if it is not the same as where varia ble is declared.
130 if (enclosingFunction != null 148 if (enclosingFunction != null
131 && !ObjectUtilities.equals(element.getEnclosingElement(), enclosingF unction)) { 149 && !ObjectUtilities.equals(element.getEnclosingElement(), enclosingF unction)) {
132 parameterImpl.markPotentiallyMutatedInClosure(); 150 parameterImpl.markPotentiallyMutatedInClosure();
133 } 151 }
134 } 152 }
135 } 153 }
136 return null; 154 return null;
137 } 155 }
138 } 156 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698