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

Unified Diff: pkg/analyzer/lib/src/dart/element/builder.dart

Issue 2435313002: More improvements to DeclarationResolver. (Closed)
Patch Set: Created 4 years, 2 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 | pkg/analyzer/lib/src/dart/element/element.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/dart/element/builder.dart
diff --git a/pkg/analyzer/lib/src/dart/element/builder.dart b/pkg/analyzer/lib/src/dart/element/builder.dart
index b45f44e9742c3ba070731d3f5e7730edd0e82d8e..b421e75f13d11de9893ebc85bf28b22a9223a5f6 100644
--- a/pkg/analyzer/lib/src/dart/element/builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/builder.dart
@@ -1078,8 +1078,11 @@ class LocalElementBuilder extends _BaseElementBuilder {
CompilationUnitElementImpl compilationUnitElement)
: super(initialHolder, compilationUnitElement);
- @override
- Object visitCatchClause(CatchClause node) {
+ /**
+ * Builds the variable elements associated with [node] and stores them in
+ * the element holder.
+ */
+ void buildCatchVariableElements(CatchClause node) {
SimpleIdentifier exceptionParameter = node.exceptionParameter;
if (exceptionParameter != null) {
// exception
@@ -1102,6 +1105,26 @@ class LocalElementBuilder extends _BaseElementBuilder {
stackTraceParameter.staticElement = stackTrace;
}
}
+ }
+
+ /**
+ * Builds the label elements associated with [labels] and stores them in the
+ * element holder.
+ */
+ void buildLabelElements(
+ NodeList<Label> labels, bool onSwitchStatement, bool onSwitchMember) {
+ for (Label label in labels) {
+ SimpleIdentifier labelName = label.label;
+ LabelElementImpl element = new LabelElementImpl.forNode(
+ labelName, onSwitchStatement, onSwitchMember);
+ labelName.staticElement = element;
+ _currentHolder.addLabel(element);
+ }
+ }
+
+ @override
+ Object visitCatchClause(CatchClause node) {
+ buildCatchVariableElements(node);
return super.visitCatchClause(node);
}
@@ -1226,37 +1249,19 @@ class LocalElementBuilder extends _BaseElementBuilder {
@override
Object visitLabeledStatement(LabeledStatement node) {
bool onSwitchStatement = node.statement is SwitchStatement;
- for (Label label in node.labels) {
- SimpleIdentifier labelName = label.label;
- LabelElementImpl element =
- new LabelElementImpl.forNode(labelName, onSwitchStatement, false);
- _currentHolder.addLabel(element);
- labelName.staticElement = element;
- }
+ buildLabelElements(node.labels, onSwitchStatement, false);
return super.visitLabeledStatement(node);
}
@override
Object visitSwitchCase(SwitchCase node) {
- for (Label label in node.labels) {
- SimpleIdentifier labelName = label.label;
- LabelElementImpl element =
- new LabelElementImpl.forNode(labelName, false, true);
- _currentHolder.addLabel(element);
- labelName.staticElement = element;
- }
+ buildLabelElements(node.labels, false, true);
return super.visitSwitchCase(node);
}
@override
Object visitSwitchDefault(SwitchDefault node) {
- for (Label label in node.labels) {
- SimpleIdentifier labelName = label.label;
- LabelElementImpl element =
- new LabelElementImpl.forNode(labelName, false, true);
- _currentHolder.addLabel(element);
- labelName.staticElement = element;
- }
+ buildLabelElements(node.labels, false, true);
return super.visitSwitchDefault(node);
}
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/element/element.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698