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

Unified Diff: pkg/analyzer/lib/src/generated/resolver.dart

Issue 285423002: New analyzer snapshot (with CaughtException). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Replace AnalysisException with CaughtException Created 6 years, 7 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
Index: pkg/analyzer/lib/src/generated/resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 824f392f5870a0808daa54b258e2ecb9e8ec1e27..f1e857c4e7ef713a823278492c47243c641e57b9 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -1461,7 +1461,7 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
}
}
} else {
- EvaluationResultImpl result = key.accept(new ConstantVisitor(_typeProvider));
+ EvaluationResultImpl result = key.accept(new ConstantVisitor.con1(_typeProvider));
if (result is ValidResult) {
DartObject value = result.value;
if (keys.contains(value)) {
@@ -1646,7 +1646,7 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
* @return the value of the compile time constant
*/
EvaluationResultImpl _validate(Expression expression, ErrorCode errorCode) {
- EvaluationResultImpl result = expression.accept(new ConstantVisitor(_typeProvider));
+ EvaluationResultImpl result = expression.accept(new ConstantVisitor.con1(_typeProvider));
_reportErrors(result, errorCode);
return result;
}
@@ -1770,7 +1770,7 @@ class ConstantVisitor_ConstantVerifier_validateInitializerExpression extends Con
List<ParameterElement> parameterElements;
- ConstantVisitor_ConstantVerifier_validateInitializerExpression(TypeProvider arg0, this.ConstantVerifier_this, this.parameterElements) : super(arg0);
+ ConstantVisitor_ConstantVerifier_validateInitializerExpression(TypeProvider arg0, this.ConstantVerifier_this, this.parameterElements) : super.con1(arg0);
@override
EvaluationResultImpl visitSimpleIdentifier(SimpleIdentifier node) {
@@ -5153,6 +5153,9 @@ class ElementResolver extends SimpleAstVisitor<Object> {
// Generate the type name.
// The error code will never be generated via type propagation
DartType targetType = _getStaticType(target);
+ if (targetType is InterfaceType && !targetType.isObject) {
+ targetType = (targetType as InterfaceType).superclass;
+ }
String targetTypeName = targetType == null ? null : targetType.name;
_resolver.reportErrorForNode(StaticTypeWarningCode.UNDEFINED_SUPER_METHOD, methodName, [methodName.name, targetTypeName]);
}
@@ -7263,6 +7266,12 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
}
@override
+ Object visitAsExpression(AsExpression node) {
+ _checkForTypeAnnotationDeferredClass(node.type);
+ return super.visitAsExpression(node);
+ }
+
+ @override
Object visitAssertStatement(AssertStatement node) {
_checkForNonBoolExpression(node);
return super.visitAssertStatement(node);
@@ -7285,7 +7294,15 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
@override
Object visitBinaryExpression(BinaryExpression node) {
- _checkForArgumentTypeNotAssignableForArgument(node.rightOperand);
+ sc.Token operator = node.operator;
+ sc.TokenType type = operator.type;
+ if (type == sc.TokenType.AMPERSAND_AMPERSAND || type == sc.TokenType.BAR_BAR) {
+ String lexeme = operator.lexeme;
+ _checkForAssignability(node.leftOperand, _boolType, StaticTypeWarningCode.NON_BOOL_OPERAND, [lexeme]);
+ _checkForAssignability(node.rightOperand, _boolType, StaticTypeWarningCode.NON_BOOL_OPERAND, [lexeme]);
+ } else {
+ _checkForArgumentTypeNotAssignableForArgument(node.rightOperand);
+ }
return super.visitBinaryExpression(node);
}
@@ -7325,6 +7342,7 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
bool previousIsInCatchClause = _isInCatchClause;
try {
_isInCatchClause = true;
+ _checkForTypeAnnotationDeferredClass(node.exceptionType);
return super.visitCatchClause(node);
} finally {
_isInCatchClause = previousIsInCatchClause;
@@ -7663,6 +7681,12 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
}
@override
+ Object visitIsExpression(IsExpression node) {
+ _checkForTypeAnnotationDeferredClass(node.type);
+ return super.visitIsExpression(node);
+ }
+
+ @override
Object visitListLiteral(ListLiteral node) {
TypeArgumentList typeArguments = node.typeArguments;
if (typeArguments != null) {
@@ -8689,6 +8713,31 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
}
/**
+ * Check that the static type of the given expression is assignable to the given type. If it
+ * isn't, report an error with the given error code.
+ *
+ * @param expression the expression being tested
+ * @param type the type that the expression must be assignable to
+ * @param errorCode the error code to be reported
+ * @param arguments the arguments to pass in when creating the error
+ * @return `true` if an error was reported
+ */
+ bool _checkForAssignability(Expression expression, InterfaceType type, ErrorCode errorCode, List<Object> arguments) {
+ if (expression == null) {
+ return false;
+ }
+ DartType expressionType = expression.staticType;
+ if (expressionType == null) {
+ return false;
+ }
+ if (expressionType.isAssignableTo(type)) {
+ return false;
+ }
+ _errorReporter.reportErrorForNode(errorCode, expression, arguments);
+ return true;
+ }
+
+ /**
* This verifies that the passed expression is not final.
*
* @param node the expression to evaluate
@@ -8723,6 +8772,10 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
return true;
}
if (variable.isFinal) {
+ if (variable is FieldElementImpl && variable.setter == null && variable.isSynthetic) {
+ _errorReporter.reportErrorForNode(StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER, highlightedNode, [variable.name, variable.enclosingElement.displayName]);
+ return true;
+ }
_errorReporter.reportErrorForNode(StaticWarningCode.ASSIGNMENT_TO_FINAL, highlightedNode, [variable.name]);
return true;
}
@@ -9212,6 +9265,11 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
if (node.factoryKeyword != null) {
return false;
}
+ // check for mixins
+ if (_enclosingClass.mixins.length != 0) {
+ _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN, node.returnType, []);
+ return true;
+ }
// try to find and check super constructor invocation
for (ConstructorInitializer initializer in node.initializers) {
if (initializer is SuperConstructorInvocation) {
@@ -9220,7 +9278,7 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
if (element == null || element.isConst) {
return false;
}
- _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, superInvocation, []);
+ _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, superInvocation, [element.enclosingElement.displayName]);
return true;
}
}
@@ -9240,7 +9298,7 @@ class ErrorVerifier extends RecursiveAstVisitor<Object> {
return false;
}
// default constructor is not 'const', report problem
- _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, node.returnType, []);
+ _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, node.returnType, [supertype.displayName]);
return true;
}
@@ -12005,13 +12063,13 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
bool visitArgumentList(ArgumentList node) => _visitExpressions(node.arguments);
@override
- bool visitAsExpression(AsExpression node) => node.expression.accept(this);
+ bool visitAsExpression(AsExpression node) => _nodeExits(node.expression);
@override
- bool visitAssertStatement(AssertStatement node) => node.condition.accept(this);
+ bool visitAssertStatement(AssertStatement node) => _nodeExits(node.condition);
@override
- bool visitAssignmentExpression(AssignmentExpression node) => node.leftHandSide.accept(this) || node.rightHandSide.accept(this);
+ bool visitAssignmentExpression(AssignmentExpression node) => _nodeExits(node.leftHandSide) || _nodeExits(node.rightHandSide);
@override
bool visitBinaryExpression(BinaryExpression node) {
@@ -12040,14 +12098,14 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
}
}
Expression rhsExpression = node.rightOperand;
- return (lhsExpression != null && lhsExpression.accept(this)) || (rhsExpression != null && rhsExpression.accept(this));
+ return _nodeExits(lhsExpression) || _nodeExits(rhsExpression);
}
@override
bool visitBlock(Block node) => _visitStatements(node.statements);
@override
- bool visitBlockFunctionBody(BlockFunctionBody node) => node.block.accept(this);
+ bool visitBlockFunctionBody(BlockFunctionBody node) => _nodeExits(node.block);
@override
bool visitBreakStatement(BreakStatement node) {
@@ -12056,13 +12114,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
}
@override
- bool visitCascadeExpression(CascadeExpression node) {
- Expression target = node.target;
- if (target.accept(this)) {
- return true;
- }
- return _visitExpressions(node.cascadeSections);
- }
+ bool visitCascadeExpression(CascadeExpression node) => _nodeExits(node.target) || _visitExpressions(node.cascadeSections);
@override
bool visitConditionalExpression(ConditionalExpression node) {
@@ -12071,7 +12123,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
Expression elseStatement = node.elseExpression;
// TODO(jwren) Do we want to take constant expressions into account, evaluate if(false) {}
// differently than if(<condition>), when <condition> evaluates to a constant false value?
- if (conditionExpression.accept(this)) {
+ if (_nodeExits(conditionExpression)) {
return true;
}
if (thenStatement == null || elseStatement == null) {
@@ -12089,7 +12141,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
_enclosingBlockContainsBreak = false;
try {
Expression conditionExpression = node.condition;
- if (conditionExpression.accept(this)) {
+ if (_nodeExits(conditionExpression)) {
return true;
}
// TODO(jwren) Do we want to take all constant expressions into account?
@@ -12097,7 +12149,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
BooleanLiteral booleanLiteral = conditionExpression;
// If do {} while (true), and the body doesn't return or the body doesn't have a break, then
// return true.
- bool blockReturns = node.body.accept(this);
+ bool blockReturns = _nodeExits(node.body);
if (booleanLiteral.value && (blockReturns || !_enclosingBlockContainsBreak)) {
return true;
}
@@ -12112,14 +12164,14 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
bool visitEmptyStatement(EmptyStatement node) => false;
@override
- bool visitExpressionStatement(ExpressionStatement node) => node.expression.accept(this);
+ bool visitExpressionStatement(ExpressionStatement node) => _nodeExits(node.expression);
@override
bool visitForEachStatement(ForEachStatement node) {
bool outerBreakValue = _enclosingBlockContainsBreak;
_enclosingBlockContainsBreak = false;
try {
- return node.iterator.accept(this);
+ return _nodeExits(node.iterator);
} finally {
_enclosingBlockContainsBreak = outerBreakValue;
}
@@ -12133,11 +12185,11 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
if (node.variables != null && _visitVariableDeclarations(node.variables.variables)) {
return true;
}
- if (node.initialization != null && node.initialization.accept(this)) {
+ if (node.initialization != null && _nodeExits(node.initialization)) {
return true;
}
Expression conditionExpression = node.condition;
- if (conditionExpression != null && conditionExpression.accept(this)) {
+ if (conditionExpression != null && _nodeExits(conditionExpression)) {
return true;
}
if (_visitExpressions(node.updaters)) {
@@ -12148,7 +12200,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
// break, then return true.
bool implicitOrExplictTrue = conditionExpression == null || (conditionExpression is BooleanLiteral && conditionExpression.value);
if (implicitOrExplictTrue) {
- bool blockReturns = node.body.accept(this);
+ bool blockReturns = _nodeExits(node.body);
if (blockReturns || !_enclosingBlockContainsBreak) {
return true;
}
@@ -12167,7 +12219,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
@override
bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
- if (node.function.accept(this)) {
+ if (_nodeExits(node.function)) {
return true;
}
return node.argumentList.accept(this);
@@ -12181,7 +12233,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
Expression conditionExpression = node.condition;
Statement thenStatement = node.thenStatement;
Statement elseStatement = node.elseStatement;
- if (conditionExpression.accept(this)) {
+ if (_nodeExits(conditionExpression)) {
return true;
}
// TODO(jwren) Do we want to take all constant expressions into account?
@@ -12189,32 +12241,32 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
BooleanLiteral booleanLiteral = conditionExpression;
if (booleanLiteral.value) {
// if(true) ...
- return thenStatement.accept(this);
+ return _nodeExits(thenStatement);
} else if (elseStatement != null) {
// if (false) ...
- return elseStatement.accept(this);
+ return _nodeExits(elseStatement);
}
}
if (thenStatement == null || elseStatement == null) {
return false;
}
- return thenStatement.accept(this) && elseStatement.accept(this);
+ return _nodeExits(thenStatement) && _nodeExits(elseStatement);
}
@override
bool visitIndexExpression(IndexExpression node) {
Expression target = node.realTarget;
- if (target != null && target.accept(this)) {
+ if (_nodeExits(target)) {
return true;
}
- if (node.index.accept(this)) {
+ if (_nodeExits(node.index)) {
return true;
}
return false;
}
@override
- bool visitInstanceCreationExpression(InstanceCreationExpression node) => node.argumentList.accept(this);
+ bool visitInstanceCreationExpression(InstanceCreationExpression node) => _nodeExits(node.argumentList);
@override
bool visitIsExpression(IsExpression node) => node.expression.accept(this);
@@ -12234,7 +12286,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
if (target != null && target.accept(this)) {
return true;
}
- return node.argumentList.accept(this);
+ return _nodeExits(node.argumentList);
}
@override
@@ -12310,11 +12362,11 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
@override
bool visitTryStatement(TryStatement node) {
- if (node.body.accept(this)) {
+ if (_nodeExits(node.body)) {
return true;
}
Block finallyBlock = node.finallyBlock;
- if (finallyBlock != null && finallyBlock.accept(this)) {
+ if (_nodeExits(finallyBlock)) {
return true;
}
return false;
@@ -12371,6 +12423,19 @@ class ExitDetector extends GeneralizingAstVisitor<bool> {
}
}
+ /**
+ * Return `true` if the given node exits.
+ *
+ * @param node the node being tested
+ * @return `true` if the given node exits
+ */
+ bool _nodeExits(AstNode node) {
+ if (node == null) {
+ return false;
+ }
+ return node.accept(this);
+ }
+
bool _visitExpressions(NodeList<Expression> expressions) {
for (int i = expressions.length - 1; i >= 0; i--) {
if (expressions[i].accept(this)) {
@@ -12778,9 +12843,9 @@ class HtmlUnitBuilder implements ht.XmlVisitor<Object> {
script.scriptLibrary = library;
_resolvedLibraries.addAll(resolver.resolvedLibraries);
_errorListener.addAll(resolver.errorListener);
- } on AnalysisException catch (exception) {
+ } on AnalysisException catch (exception, stackTrace) {
//TODO (danrubel): Handle or forward the exception
- AnalysisEngine.instance.logger.logError2("Could not resolve script tag", exception);
+ AnalysisEngine.instance.logger.logError2("Could not resolve script tag", new CaughtException(exception, stackTrace));
}
node.scriptElement = script;
_scripts.add(script);
@@ -13328,7 +13393,7 @@ class IncrementalResolver {
AstNode rootNode = _findResolutionRoot(node);
Scope scope = ScopeBuilder.scopeFor(rootNode, _errorListener);
if (_elementModelChanged(rootNode.parent)) {
- throw new AnalysisException.con1("Cannot resolve node: element model changed");
+ throw new AnalysisException("Cannot resolve node: element model changed");
}
_resolveTypes(node, scope);
_resolveVariables(node, scope);
@@ -13355,7 +13420,7 @@ class IncrementalResolver {
bool _elementModelChanged(AstNode node) {
Element element = _getElement(node);
if (element == null) {
- throw new AnalysisException.con1("Cannot resolve node: a ${node.runtimeType.toString()} does not define an element");
+ throw new AnalysisException("Cannot resolve node: a ${node.runtimeType.toString()} does not define an element");
}
DeclarationMatcher matcher = new DeclarationMatcher();
return !matcher.matches(node, element);
@@ -13377,7 +13442,7 @@ class IncrementalResolver {
parent = result.parent;
}
if (parent == null) {
- throw new AnalysisException.con1("Cannot resolve node: no resolvable node");
+ throw new AnalysisException("Cannot resolve node: no resolvable node");
}
return result;
}
@@ -14551,8 +14616,8 @@ class Library {
if (_libraryElement == null) {
try {
_libraryElement = _analysisContext.computeLibraryElement(librarySource) as LibraryElementImpl;
- } on AnalysisException catch (exception) {
- AnalysisEngine.instance.logger.logError2("Could not compute library element for ${librarySource.fullName}", exception);
+ } on AnalysisException catch (exception, stackTrace) {
+ AnalysisEngine.instance.logger.logError2("Could not compute library element for ${librarySource.fullName}", new CaughtException(exception, stackTrace));
}
}
return _libraryElement;
@@ -15196,7 +15261,7 @@ class LibraryResolver {
// This will be true unless the library being analyzed is the core library.
_coreLibrary = createLibrary(_coreLibrarySource);
if (_coreLibrary == null) {
- throw new AnalysisException.con1("Core library does not exist");
+ throw new AnalysisException("Core library does not exist");
}
}
instrumentation.metric3("createLibrary", "complete");
@@ -15223,7 +15288,7 @@ class LibraryResolver {
instrumentation.metric3("buildElementModels", "complete");
LibraryElement coreElement = _coreLibrary.libraryElement;
if (coreElement == null) {
- throw new AnalysisException.con1("Could not resolve dart:core");
+ throw new AnalysisException("Could not resolve dart:core");
}
_buildDirectiveModels();
instrumentation.metric3("buildDirectiveModels", "complete");
@@ -15280,7 +15345,7 @@ class LibraryResolver {
// This will be true unless the library being analyzed is the core library.
_coreLibrary = _createLibraryOrNull(_coreLibrarySource);
if (_coreLibrary == null) {
- throw new AnalysisException.con1("Core library does not exist");
+ throw new AnalysisException("Core library does not exist");
}
}
instrumentation.metric3("createLibrary", "complete");
@@ -15307,7 +15372,7 @@ class LibraryResolver {
instrumentation.metric3("buildElementModels", "complete");
LibraryElement coreElement = _coreLibrary.libraryElement;
if (coreElement == null) {
- throw new AnalysisException.con1("Could not resolve dart:core");
+ throw new AnalysisException("Could not resolve dart:core");
}
_buildDirectiveModels();
instrumentation.metric3("buildDirectiveModels", "complete");
@@ -15760,8 +15825,8 @@ class LibraryResolver {
if (unit != null) {
computer.add(unit);
}
- } on AnalysisException catch (exception) {
- AnalysisEngine.instance.logger.logError2("Internal Error: Could not access AST for ${source.fullName} during constant evaluation", exception);
+ } on AnalysisException catch (exception, stackTrace) {
+ AnalysisEngine.instance.logger.logError2("Internal Error: Could not access AST for ${source.fullName} during constant evaluation", new CaughtException(exception, stackTrace));
}
}
}
@@ -15955,7 +16020,7 @@ class LibraryResolver2 {
instrumentation.metric3("buildElementModels", "complete");
LibraryElement coreElement = _coreLibrary.libraryElement;
if (coreElement == null) {
- throw new AnalysisException.con1("Could not resolve dart:core");
+ throw new AnalysisException("Could not resolve dart:core");
}
_buildDirectiveModels();
instrumentation.metric3("buildDirectiveModels", "complete");
@@ -19080,14 +19145,14 @@ class ScopeBuilder {
*/
static Scope scopeFor(AstNode node, AnalysisErrorListener errorListener) {
if (node == null) {
- throw new AnalysisException.con1("Cannot create scope: node is null");
+ throw new AnalysisException("Cannot create scope: node is null");
} else if (node is CompilationUnit) {
ScopeBuilder builder = new ScopeBuilder(errorListener);
return builder._scopeForAstNode(node);
}
AstNode parent = node.parent;
if (parent == null) {
- throw new AnalysisException.con1("Cannot create scope: node is not part of a CompilationUnit");
+ throw new AnalysisException("Cannot create scope: node is not part of a CompilationUnit");
}
ScopeBuilder builder = new ScopeBuilder(errorListener);
return builder._scopeForAstNode(parent);
@@ -19123,25 +19188,25 @@ class ScopeBuilder {
}
AstNode parent = node.parent;
if (parent == null) {
- throw new AnalysisException.con1("Cannot create scope: node is not part of a CompilationUnit");
+ throw new AnalysisException("Cannot create scope: node is not part of a CompilationUnit");
}
Scope scope = _scopeForAstNode(parent);
if (node is ClassDeclaration) {
ClassElement element = node.element;
if (element == null) {
- throw new AnalysisException.con1("Cannot build a scope for an unresolved class");
+ throw new AnalysisException("Cannot build a scope for an unresolved class");
}
scope = new ClassScope(scope, element);
} else if (node is ClassTypeAlias) {
ClassElement element = node.element;
if (element == null) {
- throw new AnalysisException.con1("Cannot build a scope for an unresolved class type alias");
+ throw new AnalysisException("Cannot build a scope for an unresolved class type alias");
}
scope = new ClassScope(scope, element);
} else if (node is ConstructorDeclaration) {
ConstructorElement element = node.element;
if (element == null) {
- throw new AnalysisException.con1("Cannot build a scope for an unresolved constructor");
+ throw new AnalysisException("Cannot build a scope for an unresolved constructor");
}
FunctionScope functionScope = new FunctionScope(scope, element);
functionScope.defineParameters();
@@ -19149,7 +19214,7 @@ class ScopeBuilder {
} else if (node is FunctionDeclaration) {
ExecutableElement element = node.element;
if (element == null) {
- throw new AnalysisException.con1("Cannot build a scope for an unresolved function");
+ throw new AnalysisException("Cannot build a scope for an unresolved function");
}
FunctionScope functionScope = new FunctionScope(scope, element);
functionScope.defineParameters();
@@ -19159,7 +19224,7 @@ class ScopeBuilder {
} else if (node is MethodDeclaration) {
ExecutableElement element = node.element;
if (element == null) {
- throw new AnalysisException.con1("Cannot build a scope for an unresolved method");
+ throw new AnalysisException("Cannot build a scope for an unresolved method");
}
FunctionScope functionScope = new FunctionScope(scope, element);
functionScope.defineParameters();
@@ -19171,11 +19236,11 @@ class ScopeBuilder {
Scope _scopeForCompilationUnit(CompilationUnit node) {
CompilationUnitElement unitElement = node.element;
if (unitElement == null) {
- throw new AnalysisException.con1("Cannot create scope: compilation unit is not resolved");
+ throw new AnalysisException("Cannot create scope: compilation unit is not resolved");
}
LibraryElement libraryElement = unitElement.library;
if (libraryElement == null) {
- throw new AnalysisException.con1("Cannot create scope: compilation unit is not part of a library");
+ throw new AnalysisException("Cannot create scope: compilation unit is not part of a library");
}
return new LibraryScope(libraryElement, _errorListener);
}
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | pkg/analyzer/lib/src/generated/utilities_collection.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698