Version 0.8.1.1 .
svn merge -c 28296 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28313 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28314 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28336 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28340 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
git-svn-id: http://dart.googlecode.com/svn/trunk@28350 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkg/analyzer_experimental/lib/src/generated/ast.dart b/pkg/analyzer_experimental/lib/src/generated/ast.dart
index 3acc231..196b4e8 100644
--- a/pkg/analyzer_experimental/lib/src/generated/ast.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/ast.dart
@@ -116,7 +116,7 @@
if (beginToken == null) {
return -1;
}
- return this.beginToken.offset;
+ return beginToken.offset;
}
/**
@@ -12987,7 +12987,7 @@
try {
node.accept(this);
} on NodeLocator_NodeFoundException catch (exception) {
- } catch (exception) {
+ } on JavaException catch (exception) {
AnalysisEngine.instance.logger.logInformation2("Unable to locate element at offset (${_startOffset} - ${_endOffset})", exception);
return null;
}
@@ -13006,7 +13006,7 @@
node.visitChildren(this);
} on NodeLocator_NodeFoundException catch (exception) {
throw exception;
- } catch (exception) {
+ } on JavaException catch (exception) {
AnalysisEngine.instance.logger.logInformation2("Exception caught while traversing an AST structure.", exception);
}
if (start <= _startOffset && _endOffset <= end) {
diff --git a/pkg/analyzer_experimental/lib/src/generated/constant.dart b/pkg/analyzer_experimental/lib/src/generated/constant.dart
index 2403231..7036abb 100644
--- a/pkg/analyzer_experimental/lib/src/generated/constant.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/constant.dart
@@ -487,6 +487,7 @@
}
return result;
}
+ EvaluationResultImpl visitSymbolLiteral(SymbolLiteral node) => ValidResult.RESULT_SYMBOL;
/**
* Return a result object representing an error associated with the given node.
@@ -995,6 +996,12 @@
static ValidResult RESULT_OBJECT = new ValidResult(new Object());
/**
+ * A result object representing the an arbitrary symbol on which no further operations can be
+ * performed.
+ */
+ static ValidResult RESULT_SYMBOL = new ValidResult(new Object());
+
+ /**
* A result object representing the an arbitrary string on which no further operations can be
* performed.
*/
diff --git a/pkg/analyzer_experimental/lib/src/generated/element.dart b/pkg/analyzer_experimental/lib/src/generated/element.dart
index 776fbf2..067b214 100644
--- a/pkg/analyzer_experimental/lib/src/generated/element.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/element.dart
@@ -973,6 +973,23 @@
* @return the prefix that was specified as part of the import directive
*/
PrefixElement get prefix;
+
+ /**
+ * Return the offset of the prefix of this import in the file that contains this import directive,
+ * or `-1` if this import is synthetic, does not have a prefix, or otherwise does not have
+ * an offset.
+ *
+ * @return the offset of the prefix of this import
+ */
+ int get prefixOffset;
+
+ /**
+ * Return the offset of the character immediately following the last character of this node's URI,
+ * or `-1` for synthetic import.
+ *
+ * @return the offset of the character just past the node's URI
+ */
+ int get uriEnd;
}
/**
* The interface `LabelElement` defines the behavior of elements representing a label
@@ -3826,6 +3843,23 @@
class ImportElementImpl extends ElementImpl implements ImportElement {
/**
+ * The offset of this directive, may be `-1` if synthetic.
+ */
+ int _offset = -1;
+
+ /**
+ * The offset of the character immediately following the last character of this node's URI, may be
+ * `-1` if synthetic.
+ */
+ int _uriEnd = -1;
+
+ /**
+ * The offset of the prefix of this import in the file that contains the this import directive, or
+ * `-1` if this import is synthetic.
+ */
+ int _prefixOffset = 0;
+
+ /**
* The URI that is specified by this directive.
*/
String _uri;
@@ -3856,7 +3890,9 @@
LibraryElement get importedLibrary => _importedLibrary;
ElementKind get kind => ElementKind.IMPORT;
PrefixElement get prefix => _prefix;
+ int get prefixOffset => _prefixOffset;
String get uri => _uri;
+ int get uriEnd => _uriEnd;
/**
* Set the combinators that were specified as part of the import directive to the given array of
@@ -3879,6 +3915,13 @@
}
/**
+ * Set the offset of this directive.
+ */
+ void set offset(int offset) {
+ this._offset = offset;
+ }
+
+ /**
* Set the prefix that was specified as part of the import directive to the given prefix.
*
* @param prefix the prefix that was specified as part of the import directive
@@ -3888,6 +3931,14 @@
}
/**
+ * Set the offset of the prefix of this import in the file that contains the this import
+ * directive.
+ */
+ void set prefixOffset(int prefixOffset) {
+ this._prefixOffset = prefixOffset;
+ }
+
+ /**
* Set the URI that is specified by this directive.
*
* @param uri the URI that is specified by this directive.
@@ -3895,6 +3946,14 @@
void set uri(String uri) {
this._uri = uri;
}
+
+ /**
+ * Set the the offset of the character immediately following the last character of this node's
+ * URI. `-1` for synthetic import.
+ */
+ void set uriEnd(int uriEnd) {
+ this._uriEnd = uriEnd;
+ }
void visitChildren(ElementVisitor visitor) {
super.visitChildren(visitor);
safelyVisitChild(_prefix, visitor);
@@ -3903,7 +3962,7 @@
builder.append("import ");
((_importedLibrary as LibraryElementImpl)).appendTo(builder);
}
- String get identifier => ((_importedLibrary as LibraryElementImpl)).identifier;
+ String get identifier => "${((_importedLibrary as LibraryElementImpl)).identifier}@${_offset}";
}
/**
* Instances of the class `LabelElementImpl` implement a `LabelElement`.
@@ -5679,6 +5738,7 @@
*/
BottomTypeImpl() : super(null, "<bottom>");
bool operator ==(Object object) => identical(object, this);
+ bool get isBottom => true;
bool isMoreSpecificThan(Type2 type) => true;
bool isSubtypeOf(Type2 type) => true;
bool isSupertypeOf(Type2 type) => false;
@@ -6680,16 +6740,16 @@
return false;
}
javaSetAdd(visitedClasses, element);
- InterfaceType supertype = element.supertype;
+ InterfaceType supertype = superclass;
if (supertype != null && ((supertype as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
return true;
}
- for (InterfaceType interfaceType in element.interfaces) {
+ for (InterfaceType interfaceType in interfaces) {
if (((interfaceType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
return true;
}
}
- for (InterfaceType mixinType in element.mixins) {
+ for (InterfaceType mixinType in mixins) {
if (((mixinType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
return true;
}
@@ -6801,6 +6861,7 @@
Type2 getLeastUpperBound(Type2 type) => null;
String get name => _name;
bool isAssignableTo(Type2 type) => this.isSubtypeOf(type) || type.isSubtypeOf(this);
+ bool get isBottom => false;
bool get isDartCoreFunction => false;
bool get isDynamic => false;
bool isMoreSpecificThan(Type2 type) => false;
@@ -7423,6 +7484,13 @@
bool isAssignableTo(Type2 type);
/**
+ * Return `true` if this type represents the bottom type.
+ *
+ * @return `true` if this type represents the bottom type
+ */
+ bool get isBottom;
+
+ /**
* Return `true` if this type represents the type 'Function' defined in the dart:core
* library.
*
diff --git a/pkg/analyzer_experimental/lib/src/generated/engine.dart b/pkg/analyzer_experimental/lib/src/generated/engine.dart
index 84f6f56..603223b 100644
--- a/pkg/analyzer_experimental/lib/src/generated/engine.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/engine.dart
@@ -1158,6 +1158,11 @@
static final DataDescriptor<SourceKind> SOURCE_KIND = new DataDescriptor<SourceKind>("DartEntry.SOURCE_KIND");
/**
+ * The data descriptor representing the errors resulting from verifying the source.
+ */
+ static final DataDescriptor<List<AnalysisError>> VERIFICATION_ERRORS = new DataDescriptor<List<AnalysisError>>("DartEntry.VERIFICATION_ERRORS");
+
+ /**
* Return all of the errors associated with the compilation unit that are currently cached.
*
* @return all of the errors associated with the compilation unit
@@ -1357,6 +1362,9 @@
for (AnalysisError error in state._resolutionErrors) {
errors.add(error);
}
+ for (AnalysisError error in state._verificationErrors) {
+ errors.add(error);
+ }
for (AnalysisError error in state._hints) {
errors.add(error);
}
@@ -1448,6 +1456,8 @@
return state._resolutionErrorsState;
} else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) {
return state._resolvedUnitState;
+ } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) {
+ return state._verificationErrorsState;
} else if (identical(descriptor, DartEntry.HINTS)) {
return state._hintsState;
} else {
@@ -1457,7 +1467,7 @@
state = state._nextState;
}
;
- if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) || identical(descriptor, DartEntry.RESOLVED_UNIT) || identical(descriptor, DartEntry.HINTS)) {
+ if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) || identical(descriptor, DartEntry.RESOLVED_UNIT) || identical(descriptor, DartEntry.VERIFICATION_ERRORS) || identical(descriptor, DartEntry.HINTS)) {
return CacheState.INVALID;
} else {
throw new IllegalArgumentException("Invalid descriptor: ${descriptor}");
@@ -1496,6 +1506,8 @@
return state._resolutionErrors as Object;
} else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) {
return state._resolvedUnit as Object;
+ } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) {
+ return state._verificationErrors as Object;
} else if (identical(descriptor, DartEntry.HINTS)) {
return state._hints as Object;
} else {
@@ -1505,7 +1517,7 @@
state = state._nextState;
}
;
- if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) || identical(descriptor, DartEntry.HINTS)) {
+ if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) || identical(descriptor, DartEntry.VERIFICATION_ERRORS) || identical(descriptor, DartEntry.HINTS)) {
return AnalysisError.NO_ERRORS as Object;
} else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) {
return null;
@@ -1779,6 +1791,9 @@
} else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) {
state._resolvedUnit = updatedValue(cacheState, state._resolvedUnit, null);
state._resolvedUnitState = cacheState;
+ } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) {
+ state._verificationErrors = updatedValue(cacheState, state._verificationErrors, AnalysisError.NO_ERRORS);
+ state._verificationErrorsState = cacheState;
} else if (identical(descriptor, DartEntry.HINTS)) {
state._hints = updatedValue(cacheState, state._hints, AnalysisError.NO_ERRORS);
state._hintsState = cacheState;
@@ -1840,6 +1855,9 @@
} else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) {
state._resolvedUnit = value as CompilationUnit;
state._resolvedUnitState = CacheState.VALID;
+ } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) {
+ state._verificationErrors = value == null ? AnalysisError.NO_ERRORS : (value as List<AnalysisError>);
+ state._verificationErrorsState = CacheState.VALID;
} else if (identical(descriptor, DartEntry.HINTS)) {
state._hints = value == null ? AnalysisError.NO_ERRORS : (value as List<AnalysisError>);
state._hintsState = CacheState.VALID;
@@ -1981,6 +1999,17 @@
List<AnalysisError> _resolutionErrors = AnalysisError.NO_ERRORS;
/**
+ * The state of the cached verification errors.
+ */
+ CacheState _verificationErrorsState = CacheState.INVALID;
+
+ /**
+ * The errors produced while verifying the compilation unit, or an empty array if the errors are
+ * not currently cached.
+ */
+ List<AnalysisError> _verificationErrors = AnalysisError.NO_ERRORS;
+
+ /**
* The state of the cached hints.
*/
CacheState _hintsState = CacheState.INVALID;
@@ -2003,6 +2032,8 @@
_resolvedUnit = other._resolvedUnit;
_resolutionErrorsState = other._resolutionErrorsState;
_resolutionErrors = other._resolutionErrors;
+ _verificationErrorsState = other._verificationErrorsState;
+ _verificationErrors = other._verificationErrors;
_hintsState = other._hintsState;
_hints = other._hints;
if (other._nextState != null) {
@@ -2034,6 +2065,8 @@
_resolvedUnit = null;
_resolutionErrorsState = CacheState.INVALID;
_resolutionErrors = AnalysisError.NO_ERRORS;
+ _verificationErrorsState = CacheState.INVALID;
+ _verificationErrors = AnalysisError.NO_ERRORS;
_hintsState = CacheState.INVALID;
_hints = AnalysisError.NO_ERRORS;
}
@@ -2050,6 +2083,8 @@
_resolvedUnit = null;
_resolutionErrorsState = CacheState.ERROR;
_resolutionErrors = AnalysisError.NO_ERRORS;
+ _verificationErrorsState = CacheState.ERROR;
+ _verificationErrors = AnalysisError.NO_ERRORS;
_hintsState = CacheState.ERROR;
_hints = AnalysisError.NO_ERRORS;
}
@@ -2065,6 +2100,9 @@
if (identical(_resolutionErrorsState, CacheState.IN_PROCESS)) {
_resolutionErrorsState = CacheState.INVALID;
}
+ if (identical(_verificationErrorsState, CacheState.IN_PROCESS)) {
+ _verificationErrorsState = CacheState.INVALID;
+ }
if (identical(_hintsState, CacheState.IN_PROCESS)) {
_hintsState = CacheState.INVALID;
}
@@ -2085,6 +2123,8 @@
builder.append(_resolvedUnitState);
builder.append("; resolutionErrors = ");
builder.append(_resolutionErrorsState);
+ builder.append("; verificationErrors = ");
+ builder.append(_verificationErrorsState);
builder.append("; hints = ");
builder.append(_hintsState);
if (_nextState != null) {
@@ -2788,6 +2828,7 @@
dartEntry = getReadableDartEntry(source);
if (identical(dartEntry.getValue(DartEntry.SOURCE_KIND), SourceKind.LIBRARY)) {
ListUtilities.addAll(errors, getDartResolutionData(source, source, dartEntry, DartEntry.RESOLUTION_ERRORS));
+ ListUtilities.addAll(errors, getDartVerificationData(source, source, dartEntry, DartEntry.VERIFICATION_ERRORS));
if (enableHints) {
ListUtilities.addAll(errors, getDartHintData(source, source, dartEntry, DartEntry.HINTS));
}
@@ -2795,6 +2836,7 @@
List<Source> libraries = getLibrariesContaining(source);
for (Source librarySource in libraries) {
ListUtilities.addAll(errors, getDartResolutionData(source, librarySource, dartEntry, DartEntry.RESOLUTION_ERRORS));
+ ListUtilities.addAll(errors, getDartVerificationData(source, librarySource, dartEntry, DartEntry.VERIFICATION_ERRORS));
if (enableHints) {
ListUtilities.addAll(errors, getDartHintData(source, librarySource, dartEntry, DartEntry.HINTS));
}
@@ -3116,82 +3158,12 @@
List<Source> get sourcesNeedingProcessing {
Set<Source> sources = new Set<Source>();
{
+ bool hintsEnabled = analysisOptions.hint;
for (Source source in _cache.priorityOrder) {
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry is DartEntry) {
- DartEntry dartEntry = sourceEntry as DartEntry;
- CacheState parseErrorsState = dartEntry.getState(DartEntry.PARSE_ERRORS);
- if (identical(parseErrorsState, CacheState.INVALID) || identical(parseErrorsState, CacheState.FLUSHED)) {
- javaSetAdd(sources, source);
- }
- CompilationUnit parseUnit = dartEntry.anyParsedCompilationUnit;
- if (parseUnit == null) {
- javaSetAdd(sources, source);
- }
- for (Source librarySource in getLibrariesContaining(source)) {
- SourceEntry libraryEntry = _cache.get(librarySource);
- if (libraryEntry is DartEntry) {
- CacheState elementState = libraryEntry.getState(DartEntry.ELEMENT);
- if (identical(elementState, CacheState.INVALID) || identical(elementState, CacheState.FLUSHED)) {
- javaSetAdd(sources, source);
- }
- CacheState resolvedUnitState = dartEntry.getState2(DartEntry.RESOLVED_UNIT, librarySource);
- if (identical(resolvedUnitState, CacheState.INVALID) || identical(resolvedUnitState, CacheState.FLUSHED)) {
- LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
- if (libraryElement != null) {
- javaSetAdd(sources, source);
- }
- }
- CacheState hintsState = dartEntry.getState2(DartEntry.HINTS, librarySource);
- if (identical(hintsState, CacheState.INVALID) || identical(hintsState, CacheState.FLUSHED)) {
- LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
- if (libraryElement != null) {
- javaSetAdd(sources, source);
- }
- }
- }
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- CacheState parsedUnitState = htmlEntry.getState(HtmlEntry.PARSED_UNIT);
- if (identical(parsedUnitState, CacheState.INVALID) || identical(parsedUnitState, CacheState.FLUSHED)) {
- javaSetAdd(sources, source);
- }
- CacheState elementState = htmlEntry.getState(HtmlEntry.ELEMENT);
- if (identical(elementState, CacheState.INVALID) || identical(elementState, CacheState.FLUSHED)) {
- javaSetAdd(sources, source);
- }
- }
+ getSourcesNeedingProcessing2(source, _cache.get(source), true, hintsEnabled, sources);
}
for (MapEntry<Source, SourceEntry> entry in _cache.entrySet()) {
- SourceEntry sourceEntry = entry.getValue();
- if (sourceEntry is DartEntry) {
- DartEntry dartEntry = sourceEntry as DartEntry;
- if (identical(dartEntry.getState(DartEntry.PARSED_UNIT), CacheState.INVALID)) {
- javaSetAdd(sources, entry.getKey());
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- if (identical(htmlEntry.getState(HtmlEntry.PARSED_UNIT), CacheState.INVALID)) {
- javaSetAdd(sources, entry.getKey());
- }
- }
- }
- for (MapEntry<Source, SourceEntry> entry in _cache.entrySet()) {
- SourceEntry sourceEntry = entry.getValue();
- if (sourceEntry is DartEntry) {
- DartEntry dartEntry = sourceEntry as DartEntry;
- if (identical(dartEntry.kind, SourceKind.LIBRARY) && identical(dartEntry.getState(DartEntry.ELEMENT), CacheState.INVALID)) {
- javaSetAdd(sources, entry.getKey());
- } else if (identical(dartEntry.getState2(DartEntry.HINTS, entry.getKey()), CacheState.INVALID)) {
- javaSetAdd(sources, entry.getKey());
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- if (identical(htmlEntry.getState(HtmlEntry.ELEMENT), CacheState.INVALID)) {
- javaSetAdd(sources, entry.getKey());
- }
- }
+ getSourcesNeedingProcessing2(entry.getKey(), entry.getValue(), false, hintsEnabled, sources);
}
}
return new List<Source>.from(sources);
@@ -3222,6 +3194,7 @@
statistics.putCacheItem2(dartEntry, librarySource, DartEntry.HINTS);
statistics.putCacheItem2(dartEntry, librarySource, DartEntry.RESOLUTION_ERRORS);
statistics.putCacheItem2(dartEntry, librarySource, DartEntry.RESOLVED_UNIT);
+ statistics.putCacheItem2(dartEntry, librarySource, DartEntry.VERIFICATION_ERRORS);
}
}
}
@@ -3393,9 +3366,9 @@
* @throws AnalysisException if any of the modification times could not be determined (this should
* not happen)
*/
- bool allModificationTimesMatch(LibraryResolver resolver) {
+ bool allModificationTimesMatch(Set<Library> resolvedLibraries) {
bool allTimesMatch = true;
- for (Library library in resolver.resolvedLibraries) {
+ for (Library library in resolvedLibraries) {
for (Source source in library.compilationUnitSources) {
DartEntry dartEntry = getReadableDartEntry(source);
if (dartEntry == null) {
@@ -3483,6 +3456,27 @@
}
/**
+ * Given a source for a Dart file and the library that contains it, return a cache entry in which
+ * the data represented by the given descriptor is available. This method assumes that the data
+ * can be produced by verifying the source in the given library if the data is not already cached.
+ *
+ * @param unitSource the source representing the Dart file
+ * @param librarySource the source representing the library containing the Dart file
+ * @param dartEntry the cache entry associated with the Dart file
+ * @param descriptor the descriptor representing the data to be returned
+ * @return a cache entry containing the required data
+ * @throws AnalysisException if data could not be returned because the source could not be parsed
+ */
+ DartEntry cacheDartVerificationData(Source unitSource, Source librarySource, DartEntry dartEntry, DataDescriptor descriptor) {
+ CacheState state = dartEntry.getState2(descriptor, librarySource);
+ while (state != CacheState.ERROR && state != CacheState.VALID) {
+ dartEntry = new GenerateDartErrorsTask(this, unitSource, getLibraryElement(librarySource)).perform(_resultRecorder) as DartEntry;
+ state = dartEntry.getState2(descriptor, librarySource);
+ }
+ return dartEntry;
+ }
+
+ /**
* Given a source for an HTML file, return a cache entry in which all of the data represented by
* the given descriptors is available. This method assumes that the data can be produced by
* parsing the source if it is not already cached.
@@ -3715,6 +3709,24 @@
}
/**
+ * Given a source for a Dart file and the library that contains it, return the data represented by
+ * the given descriptor that is associated with that source. This method assumes that the data can
+ * be produced by verifying the source within the given library if it is not already cached.
+ *
+ * @param unitSource the source representing the Dart file
+ * @param librarySource the source representing the library containing the Dart file
+ * @param dartEntry the entry representing the Dart file
+ * @param descriptor the descriptor representing the data to be returned
+ * @return the requested data about the given source
+ * @throws AnalysisException if data could not be returned because the source could not be
+ * resolved
+ */
+ Object getDartVerificationData(Source unitSource, Source librarySource, DartEntry dartEntry, DataDescriptor descriptor) {
+ dartEntry = cacheDartVerificationData(unitSource, librarySource, dartEntry, descriptor);
+ return dartEntry.getValue2(descriptor, librarySource);
+ }
+
+ /**
* Given a source for an HTML file, return the data represented by the given descriptor that is
* associated with that source, or the given default value if the source is not an HTML file. This
* method assumes that the data can be produced by parsing the source if it is not already cached.
@@ -3780,125 +3792,17 @@
*/
AnalysisTask get nextTaskAnalysisTask {
{
- bool enableHints = analysisOptions.hint;
+ bool hintsEnabled = analysisOptions.hint;
for (Source source in _cache.priorityOrder) {
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry is DartEntry) {
- DartEntry dartEntry = sourceEntry as DartEntry;
- CacheState parseErrorsState = dartEntry.getState(DartEntry.PARSE_ERRORS);
- if (identical(parseErrorsState, CacheState.INVALID) || identical(parseErrorsState, CacheState.FLUSHED)) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState(DartEntry.PARSE_ERRORS, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new ParseDartTask(this, source);
- }
- CompilationUnit parseUnit = dartEntry.anyParsedCompilationUnit;
- if (parseUnit == null) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState(DartEntry.PARSED_UNIT, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new ParseDartTask(this, source);
- }
- for (Source librarySource in getLibrariesContaining(source)) {
- SourceEntry libraryEntry = _cache.get(librarySource);
- if (libraryEntry is DartEntry) {
- CacheState elementState = libraryEntry.getState(DartEntry.ELEMENT);
- if (identical(elementState, CacheState.INVALID) || identical(elementState, CacheState.FLUSHED)) {
- DartEntryImpl libraryCopy = ((libraryEntry as DartEntry)).writableCopy;
- libraryCopy.setState(DartEntry.ELEMENT, CacheState.IN_PROCESS);
- _cache.put(librarySource, libraryCopy);
- return new ResolveDartLibraryTask(this, source, librarySource);
- }
- CacheState resolvedUnitState = dartEntry.getState2(DartEntry.RESOLVED_UNIT, librarySource);
- if (identical(resolvedUnitState, CacheState.INVALID) || identical(resolvedUnitState, CacheState.FLUSHED)) {
- LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
- if (libraryElement != null) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState2(DartEntry.RESOLVED_UNIT, librarySource, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new ResolveDartUnitTask(this, source, libraryElement);
- }
- }
- CacheState hintsState = dartEntry.getState2(DartEntry.HINTS, librarySource);
- if (enableHints && (identical(hintsState, CacheState.INVALID) || identical(hintsState, CacheState.FLUSHED))) {
- LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
- if (libraryElement != null) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState2(DartEntry.HINTS, librarySource, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new GenerateDartHintsTask(this, libraryElement);
- }
- }
- }
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- CacheState parsedUnitState = htmlEntry.getState(HtmlEntry.PARSED_UNIT);
- if (identical(parsedUnitState, CacheState.INVALID) || identical(parsedUnitState, CacheState.FLUSHED)) {
- HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
- htmlCopy.setState(HtmlEntry.PARSED_UNIT, CacheState.IN_PROCESS);
- _cache.put(source, htmlCopy);
- return new ParseHtmlTask(this, source);
- }
- CacheState elementState = htmlEntry.getState(HtmlEntry.ELEMENT);
- if (identical(elementState, CacheState.INVALID) || identical(elementState, CacheState.FLUSHED)) {
- HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
- htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.IN_PROCESS);
- _cache.put(source, htmlCopy);
- return new ResolveHtmlTask(this, source);
- }
+ AnalysisTask task = getNextTaskAnalysisTask2(source, _cache.get(source), true, hintsEnabled);
+ if (task != null) {
+ return task;
}
}
for (MapEntry<Source, SourceEntry> entry in _cache.entrySet()) {
- SourceEntry sourceEntry = entry.getValue();
- if (sourceEntry is DartEntry) {
- DartEntry dartEntry = sourceEntry as DartEntry;
- if (identical(dartEntry.getState(DartEntry.PARSED_UNIT), CacheState.INVALID)) {
- Source source = entry.getKey();
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState(DartEntry.PARSE_ERRORS, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new ParseDartTask(this, source);
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- if (identical(htmlEntry.getState(HtmlEntry.PARSED_UNIT), CacheState.INVALID)) {
- Source source = entry.getKey();
- HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
- htmlCopy.setState(HtmlEntry.PARSED_UNIT, CacheState.IN_PROCESS);
- _cache.put(source, htmlCopy);
- return new ParseHtmlTask(this, source);
- }
- }
- }
- for (MapEntry<Source, SourceEntry> entry in _cache.entrySet()) {
- SourceEntry sourceEntry = entry.getValue();
- if (sourceEntry is DartEntry) {
- Source source = entry.getKey();
- DartEntry dartEntry = sourceEntry as DartEntry;
- if (identical(dartEntry.kind, SourceKind.LIBRARY) && identical(dartEntry.getState(DartEntry.ELEMENT), CacheState.INVALID)) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState(DartEntry.ELEMENT, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new ResolveDartLibraryTask(this, source, source);
- } else if (enableHints && identical(dartEntry.getState2(DartEntry.HINTS, source), CacheState.INVALID)) {
- LibraryElement libraryElement = dartEntry.getValue(DartEntry.ELEMENT);
- if (libraryElement != null) {
- DartEntryImpl dartCopy = dartEntry.writableCopy;
- dartCopy.setState2(DartEntry.HINTS, source, CacheState.IN_PROCESS);
- _cache.put(source, dartCopy);
- return new GenerateDartHintsTask(this, libraryElement);
- }
- }
- } else if (sourceEntry is HtmlEntry) {
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- if (identical(htmlEntry.getState(HtmlEntry.ELEMENT), CacheState.INVALID)) {
- Source source = entry.getKey();
- HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
- htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.IN_PROCESS);
- _cache.put(source, htmlCopy);
- return new ResolveHtmlTask(this, source);
- }
+ AnalysisTask task = getNextTaskAnalysisTask2(entry.getKey(), entry.getValue(), false, hintsEnabled);
+ if (task != null) {
+ return task;
}
}
return null;
@@ -3906,6 +3810,102 @@
}
/**
+ * Look at the given source to see whether a task needs to be performed related to it. Return the
+ * task that should be performed, or `null` if there is no more work to be done for the
+ * source.
+ *
+ * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock].
+ *
+ * @param source the source to be checked
+ * @param sourceEntry the cache entry associated with the source
+ * @param isPriority `true` if the source is a priority source
+ * @param hintsEnabled `true` if hints are currently enabled
+ * @return the next task that needs to be performed for the given source
+ */
+ AnalysisTask getNextTaskAnalysisTask2(Source source, SourceEntry sourceEntry, bool isPriority, bool hintsEnabled) {
+ if (sourceEntry is DartEntry) {
+ DartEntry dartEntry = sourceEntry as DartEntry;
+ CacheState parseErrorsState = dartEntry.getState(DartEntry.PARSE_ERRORS);
+ if (identical(parseErrorsState, CacheState.INVALID) || (isPriority && identical(parseErrorsState, CacheState.FLUSHED))) {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ dartCopy.setState(DartEntry.PARSE_ERRORS, CacheState.IN_PROCESS);
+ _cache.put(source, dartCopy);
+ return new ParseDartTask(this, source);
+ }
+ if (isPriority) {
+ CompilationUnit parseUnit = dartEntry.anyParsedCompilationUnit;
+ if (parseUnit == null) {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ dartCopy.setState(DartEntry.PARSED_UNIT, CacheState.IN_PROCESS);
+ _cache.put(source, dartCopy);
+ return new ParseDartTask(this, source);
+ }
+ }
+ for (Source librarySource in getLibrariesContaining(source)) {
+ SourceEntry libraryEntry = _cache.get(librarySource);
+ if (libraryEntry is DartEntry) {
+ CacheState elementState = libraryEntry.getState(DartEntry.ELEMENT);
+ if (identical(elementState, CacheState.INVALID) || (isPriority && identical(elementState, CacheState.FLUSHED))) {
+ DartEntryImpl libraryCopy = ((libraryEntry as DartEntry)).writableCopy;
+ libraryCopy.setState(DartEntry.ELEMENT, CacheState.IN_PROCESS);
+ _cache.put(librarySource, libraryCopy);
+ return new ResolveDartLibraryTask(this, source, librarySource);
+ }
+ CacheState resolvedUnitState = dartEntry.getState2(DartEntry.RESOLVED_UNIT, librarySource);
+ if (identical(resolvedUnitState, CacheState.INVALID) || (isPriority && identical(resolvedUnitState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ dartCopy.setState2(DartEntry.RESOLVED_UNIT, librarySource, CacheState.IN_PROCESS);
+ _cache.put(source, dartCopy);
+ return new ResolveDartUnitTask(this, source, libraryElement);
+ }
+ }
+ CacheState verificationErrorsState = dartEntry.getState2(DartEntry.VERIFICATION_ERRORS, librarySource);
+ if (identical(verificationErrorsState, CacheState.INVALID) || (isPriority && identical(verificationErrorsState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ dartCopy.setState2(DartEntry.VERIFICATION_ERRORS, librarySource, CacheState.IN_PROCESS);
+ _cache.put(source, dartCopy);
+ return new GenerateDartErrorsTask(this, source, libraryElement);
+ }
+ }
+ if (hintsEnabled) {
+ CacheState hintsState = dartEntry.getState2(DartEntry.HINTS, librarySource);
+ if (identical(hintsState, CacheState.INVALID) || (isPriority && identical(hintsState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ dartCopy.setState2(DartEntry.HINTS, librarySource, CacheState.IN_PROCESS);
+ _cache.put(source, dartCopy);
+ return new GenerateDartHintsTask(this, libraryElement);
+ }
+ }
+ }
+ }
+ }
+ } else if (sourceEntry is HtmlEntry) {
+ HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
+ CacheState parsedUnitState = htmlEntry.getState(HtmlEntry.PARSED_UNIT);
+ if (identical(parsedUnitState, CacheState.INVALID) || (isPriority && identical(parsedUnitState, CacheState.FLUSHED))) {
+ HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
+ htmlCopy.setState(HtmlEntry.PARSED_UNIT, CacheState.IN_PROCESS);
+ _cache.put(source, htmlCopy);
+ return new ParseHtmlTask(this, source);
+ }
+ CacheState elementState = htmlEntry.getState(HtmlEntry.ELEMENT);
+ if (identical(elementState, CacheState.INVALID) || (isPriority && identical(elementState, CacheState.FLUSHED))) {
+ HtmlEntryImpl htmlCopy = htmlEntry.writableCopy;
+ htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.IN_PROCESS);
+ _cache.put(source, htmlCopy);
+ return new ResolveHtmlTask(this, source);
+ }
+ }
+ return null;
+ }
+
+ /**
* Return a change notice for the given source, creating one if one does not already exist.
*
* @param source the source for which changes are being reported
@@ -4001,6 +4001,87 @@
}
/**
+ * Look at the given source to see whether a task needs to be performed related to it. If so, add
+ * the source to the set of sources that need to be processed. This method duplicates, and must
+ * therefore be kept in sync with,
+ * [getNextTaskAnalysisTask]. This method is
+ * intended to be used for testing purposes only.
+ *
+ * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock].
+ *
+ * @param source the source to be checked
+ * @param sourceEntry the cache entry associated with the source
+ * @param isPriority `true` if the source is a priority source
+ * @param hintsEnabled `true` if hints are currently enabled
+ * @param sources the set to which sources should be added
+ */
+ void getSourcesNeedingProcessing2(Source source, SourceEntry sourceEntry, bool isPriority, bool hintsEnabled, Set<Source> sources) {
+ if (sourceEntry is DartEntry) {
+ DartEntry dartEntry = sourceEntry as DartEntry;
+ CacheState parseErrorsState = dartEntry.getState(DartEntry.PARSE_ERRORS);
+ if (identical(parseErrorsState, CacheState.INVALID) || (isPriority && identical(parseErrorsState, CacheState.FLUSHED))) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ if (isPriority) {
+ CompilationUnit parseUnit = dartEntry.anyParsedCompilationUnit;
+ if (parseUnit == null) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ }
+ for (Source librarySource in getLibrariesContaining(source)) {
+ SourceEntry libraryEntry = _cache.get(librarySource);
+ if (libraryEntry is DartEntry) {
+ CacheState elementState = libraryEntry.getState(DartEntry.ELEMENT);
+ if (identical(elementState, CacheState.INVALID) || (isPriority && identical(elementState, CacheState.FLUSHED))) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ CacheState resolvedUnitState = dartEntry.getState2(DartEntry.RESOLVED_UNIT, librarySource);
+ if (identical(resolvedUnitState, CacheState.INVALID) || (isPriority && identical(resolvedUnitState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ }
+ CacheState verificationErrorsState = dartEntry.getState2(DartEntry.VERIFICATION_ERRORS, librarySource);
+ if (identical(verificationErrorsState, CacheState.INVALID) || (isPriority && identical(verificationErrorsState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ }
+ if (hintsEnabled) {
+ CacheState hintsState = dartEntry.getState2(DartEntry.HINTS, librarySource);
+ if (identical(hintsState, CacheState.INVALID) || (isPriority && identical(hintsState, CacheState.FLUSHED))) {
+ LibraryElement libraryElement = libraryEntry.getValue(DartEntry.ELEMENT);
+ if (libraryElement != null) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ }
+ }
+ }
+ }
+ } else if (sourceEntry is HtmlEntry) {
+ HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
+ CacheState parsedUnitState = htmlEntry.getState(HtmlEntry.PARSED_UNIT);
+ if (identical(parsedUnitState, CacheState.INVALID) || (isPriority && identical(parsedUnitState, CacheState.FLUSHED))) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ CacheState elementState = htmlEntry.getState(HtmlEntry.ELEMENT);
+ if (identical(elementState, CacheState.INVALID) || (isPriority && identical(elementState, CacheState.FLUSHED))) {
+ javaSetAdd(sources, source);
+ return;
+ }
+ }
+ }
+
+ /**
* Invalidate all of the resolution results computed by this context.
*
* <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock].
@@ -4098,6 +4179,65 @@
}
/**
+ * Record the results produced by performing a [GenerateDartErrorsTask]. If the results were
+ * computed from data that is now out-of-date, then the results will not be recorded.
+ *
+ * @param task the task that was performed
+ * @return an entry containing the computed results
+ * @throws AnalysisException if the results could not be recorded
+ */
+ DartEntry recordGenerateDartErrorsTask(GenerateDartErrorsTask task) {
+ Source source = task.source;
+ Source librarySource = task.libraryElement.source;
+ AnalysisException thrownException = task.exception;
+ DartEntry dartEntry = null;
+ {
+ SourceEntry sourceEntry = _cache.get(source);
+ if (sourceEntry is! DartEntry) {
+ throw new AnalysisException.con1("Internal error: attempting to verify non-Dart file as a Dart file: ${source.fullName}");
+ }
+ dartEntry = sourceEntry as DartEntry;
+ _cache.accessed(source);
+ int sourceTime = source.modificationStamp;
+ int resultTime = task.modificationTime;
+ if (sourceTime == resultTime) {
+ if (dartEntry.modificationTime != sourceTime) {
+ sourceChanged(source);
+ dartEntry = getReadableDartEntry(source);
+ if (dartEntry == null) {
+ throw new AnalysisException.con1("A Dart file became a non-Dart file: ${source.fullName}");
+ }
+ }
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ if (thrownException == null) {
+ dartCopy.setValue2(DartEntry.VERIFICATION_ERRORS, librarySource, task.errors);
+ ChangeNoticeImpl notice = getNotice(source);
+ notice.setErrors(dartCopy.allErrors, dartCopy.getValue(SourceEntry.LINE_INFO));
+ } else {
+ dartCopy.setState2(DartEntry.VERIFICATION_ERRORS, librarySource, CacheState.ERROR);
+ }
+ dartCopy.exception = thrownException;
+ _cache.put(source, dartCopy);
+ dartEntry = dartCopy;
+ } else {
+ DartEntryImpl dartCopy = dartEntry.writableCopy;
+ if (thrownException == null || resultTime >= 0) {
+ dartCopy.setState2(DartEntry.VERIFICATION_ERRORS, librarySource, CacheState.INVALID);
+ } else {
+ dartCopy.setState2(DartEntry.VERIFICATION_ERRORS, librarySource, CacheState.ERROR);
+ }
+ dartCopy.exception = thrownException;
+ _cache.put(source, dartCopy);
+ dartEntry = dartCopy;
+ }
+ }
+ if (thrownException != null) {
+ throw thrownException;
+ }
+ return dartEntry;
+ }
+
+ /**
* Record the results produced by performing a [GenerateDartHintsTask]. If the results were
* computed from data that is now out-of-date, then the results will not be recorded.
*
@@ -4224,6 +4364,8 @@
dartCopy.setValue(DartEntry.EXPORTED_LIBRARIES, task.exportedSources);
dartCopy.setValue(DartEntry.IMPORTED_LIBRARIES, task.importedSources);
dartCopy.setValue(DartEntry.INCLUDED_PARTS, task.includedSources);
+ ChangeNoticeImpl notice = getNotice(source);
+ notice.setErrors(dartEntry.allErrors, lineInfo);
} else {
dartCopy.recordParseError();
}
@@ -4336,11 +4478,26 @@
DartEntry unitEntry = null;
Source unitSource = task.unitSource;
if (resolver != null) {
+ Set<Library> resolvedLibraries = resolver.resolvedLibraries;
+ if (resolvedLibraries == null) {
+ unitEntry = getReadableDartEntry(unitSource);
+ if (unitEntry == null) {
+ throw new AnalysisException.con1("A Dart file became a non-Dart file: ${unitSource.fullName}");
+ }
+ DartEntryImpl dartCopy = unitEntry.writableCopy;
+ dartCopy.recordResolutionError();
+ dartCopy.exception = thrownException;
+ _cache.put(unitSource, dartCopy);
+ if (thrownException != null) {
+ throw thrownException;
+ }
+ return dartCopy;
+ }
{
- if (allModificationTimesMatch(resolver)) {
+ if (allModificationTimesMatch(resolvedLibraries)) {
Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML);
RecordingErrorListener errorListener = resolver.errorListener;
- for (Library library in resolver.resolvedLibraries) {
+ for (Library library in resolvedLibraries) {
Source librarySource = library.librarySource;
for (Source source in library.compilationUnitSources) {
CompilationUnit unit = library.getAST(source);
@@ -4379,7 +4536,7 @@
}
}
} else {
- for (Library library in resolver.resolvedLibraries) {
+ for (Library library in resolvedLibraries) {
for (Source source in library.compilationUnitSources) {
DartEntry dartEntry = getReadableDartEntry(source);
if (dartEntry != null) {
@@ -4569,7 +4726,14 @@
_cache.put(source, htmlCopy);
} else if (sourceEntry is DartEntry) {
List<Source> containingLibraries = getLibrariesContaining(source);
- for (Source library in containingLibraries) {
+ Set<Source> librariesToInvalidate = new Set<Source>();
+ for (Source containingLibrary in containingLibraries) {
+ javaSetAdd(librariesToInvalidate, containingLibrary);
+ for (Source dependentLibrary in getLibrariesDependingOn(containingLibrary)) {
+ javaSetAdd(librariesToInvalidate, dependentLibrary);
+ }
+ }
+ for (Source library in librariesToInvalidate) {
invalidateLibraryResolution(library);
}
DartEntryImpl dartCopy = ((sourceEntry as DartEntry)).writableCopy;
@@ -4608,6 +4772,7 @@
class AnalysisContextImpl_AnalysisTaskResultRecorder implements AnalysisTaskVisitor<SourceEntry> {
final AnalysisContextImpl AnalysisContextImpl_this;
AnalysisContextImpl_AnalysisTaskResultRecorder(this.AnalysisContextImpl_this);
+ SourceEntry visitGenerateDartErrorsTask(GenerateDartErrorsTask task) => AnalysisContextImpl_this.recordGenerateDartErrorsTask(task);
SourceEntry visitGenerateDartHintsTask(GenerateDartHintsTask task) => AnalysisContextImpl_this.recordGenerateDartHintsTask(task);
DartEntry visitParseDartTask(ParseDartTask task) => AnalysisContextImpl_this.recordParseDartTaskResults(task);
HtmlEntry visitParseHtmlTask(ParseHtmlTask task) => AnalysisContextImpl_this.recordParseHtmlTaskResults(task);
@@ -4814,6 +4979,7 @@
this._errors = errors;
this._lineInfo = lineInfo;
}
+ String toString() => "Changes for ${_source.fullName}";
}
/**
* Instances of the class `DelegatingAnalysisContextImpl` extend [AnalysisContextImpl
@@ -5995,7 +6161,7 @@
internalPerform();
} on AnalysisException catch (exception) {
throw exception;
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new AnalysisException.con3(exception);
}
}
@@ -6008,6 +6174,15 @@
abstract class AnalysisTaskVisitor<E> {
/**
+ * Visit a [GenerateDartErrorsTask].
+ *
+ * @param task the task to be visited
+ * @return the result of visiting the task
+ * @throws AnalysisException if the visitor throws an exception for some reason
+ */
+ E visitGenerateDartErrorsTask(GenerateDartErrorsTask task);
+
+ /**
* Visit a [GenerateDartHintsTask].
*
* @param task the task to be visited
@@ -6062,6 +6237,67 @@
E visitResolveHtmlTask(ResolveHtmlTask task);
}
/**
+ * Instances of the class `GenerateDartErrorsTask` generate errors and warnings for a single
+ * Dart source.
+ */
+class GenerateDartErrorsTask extends AnalysisTask {
+
+ /**
+ * The source for which errors and warnings are to be produced.
+ */
+ Source source;
+
+ /**
+ * The element model for the library containing the source.
+ */
+ LibraryElement libraryElement;
+
+ /**
+ * The time at which the contents of the source were last modified.
+ */
+ int modificationTime = -1;
+
+ /**
+ * The errors that were generated for the source.
+ */
+ List<AnalysisError> errors;
+
+ /**
+ * Initialize a newly created task to perform analysis within the given context.
+ *
+ * @param context the context in which the task is to be performed
+ * @param source the source for which errors and warnings are to be produced
+ * @param libraryElement the element model for the library containing the source
+ */
+ GenerateDartErrorsTask(InternalAnalysisContext context, Source source, LibraryElement libraryElement) : super(context) {
+ this.source = source;
+ this.libraryElement = libraryElement;
+ }
+ accept(AnalysisTaskVisitor visitor) => visitor.visitGenerateDartErrorsTask(this);
+ String get taskDescription => "generate errors and warnings for ${source.fullName}";
+ void internalPerform() {
+ TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.errors.start();
+ try {
+ InternalAnalysisContext context = this.context;
+ TimestampedData<CompilationUnit> data = context.internalResolveCompilationUnit(source, libraryElement);
+ modificationTime = data.modificationTime;
+ CompilationUnit unit = data.data;
+ RecordingErrorListener errorListener = new RecordingErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
+ Source coreSource = context.sourceFactory.forUri(DartSdk.DART_CORE);
+ LibraryElement coreLibrary = context.getLibraryElement(coreSource);
+ TypeProvider typeProvider = new TypeProviderImpl(coreLibrary);
+ ConstantVerifier constantVerifier = new ConstantVerifier(errorReporter, typeProvider);
+ unit.accept(constantVerifier);
+ ErrorVerifier errorVerifier = new ErrorVerifier(errorReporter, libraryElement, typeProvider, new InheritanceManager(libraryElement));
+ unit.accept(errorVerifier);
+ errors = errorListener.getErrors2(source);
+ } finally {
+ timeCounter.stop();
+ }
+ }
+}
+/**
* Instances of the class `GenerateDartHintsTask` generate hints for a single Dart library.
*/
class GenerateDartHintsTask extends AnalysisTask {
@@ -6246,43 +6482,49 @@
RecordingErrorListener errorListener = new RecordingErrorListener();
List<Token> token = [null];
TimeCounter_TimeCounterHandle timeCounterScan = PerformanceStatistics.scan.start();
- Source_ContentReceiver receiver = new Source_ContentReceiver_9(this, errorListener, token);
try {
- source.getContents(receiver);
- } catch (exception) {
- modificationTime = source.modificationStamp;
- throw new AnalysisException.con3(exception);
- }
- timeCounterScan.stop();
- TimeCounter_TimeCounterHandle timeCounterParse = PerformanceStatistics.parse.start();
- Parser parser = new Parser(source, errorListener);
- compilationUnit = parser.parseCompilationUnit(token[0]);
- errors = errorListener.getErrors2(source);
- for (Directive directive in compilationUnit.directives) {
- if (directive is ExportDirective) {
- Source exportSource = resolveSource(source, directive as ExportDirective);
- if (exportSource != null) {
- javaSetAdd(_exportedSources, exportSource);
- }
- } else if (directive is ImportDirective) {
- Source importSource = resolveSource(source, directive as ImportDirective);
- if (importSource != null) {
- javaSetAdd(_importedSources, importSource);
- }
- } else if (directive is LibraryDirective) {
- _hasLibraryDirective2 = true;
- } else if (directive is PartDirective) {
- Source partSource = resolveSource(source, directive as PartDirective);
- if (partSource != null) {
- javaSetAdd(_includedSources, partSource);
- }
- } else if (directive is PartOfDirective) {
- _hasPartOfDirective2 = true;
+ Source_ContentReceiver receiver = new Source_ContentReceiver_9(this, errorListener, token);
+ try {
+ source.getContents(receiver);
+ } on JavaException catch (exception) {
+ modificationTime = source.modificationStamp;
+ throw new AnalysisException.con3(exception);
}
+ } finally {
+ timeCounterScan.stop();
}
- compilationUnit.parsingErrors = errors;
- compilationUnit.lineInfo = lineInfo;
- timeCounterParse.stop();
+ TimeCounter_TimeCounterHandle timeCounterParse = PerformanceStatistics.parse.start();
+ try {
+ Parser parser = new Parser(source, errorListener);
+ compilationUnit = parser.parseCompilationUnit(token[0]);
+ errors = errorListener.getErrors2(source);
+ for (Directive directive in compilationUnit.directives) {
+ if (directive is ExportDirective) {
+ Source exportSource = resolveSource(source, directive as ExportDirective);
+ if (exportSource != null) {
+ javaSetAdd(_exportedSources, exportSource);
+ }
+ } else if (directive is ImportDirective) {
+ Source importSource = resolveSource(source, directive as ImportDirective);
+ if (importSource != null) {
+ javaSetAdd(_importedSources, importSource);
+ }
+ } else if (directive is LibraryDirective) {
+ _hasLibraryDirective2 = true;
+ } else if (directive is PartDirective) {
+ Source partSource = resolveSource(source, directive as PartDirective);
+ if (partSource != null) {
+ javaSetAdd(_includedSources, partSource);
+ }
+ } else if (directive is PartOfDirective) {
+ _hasPartOfDirective2 = true;
+ }
+ }
+ compilationUnit.parsingErrors = errors;
+ compilationUnit.lineInfo = lineInfo;
+ } finally {
+ timeCounterParse.stop();
+ }
}
/**
@@ -6414,7 +6656,7 @@
HtmlScanner scanner = new HtmlScanner(source);
try {
source.getContents(scanner);
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new AnalysisException.con3(exception);
}
HtmlScanResult scannerResult = scanner.result;
@@ -6461,11 +6703,10 @@
Uri uri = new Uri(path: scriptAttribute.text);
String fileName = uri.path;
Source librarySource = ParseHtmlTask_this.context.sourceFactory.resolveUri(ParseHtmlTask_this.source, fileName);
- if (librarySource.exists()) {
+ if (librarySource != null && librarySource.exists()) {
libraries.add(librarySource);
}
- } catch (exception) {
- AnalysisEngine.instance.logger.logInformation2("Invalid URL ('${scriptAttribute.text}') in script tag in '${ParseHtmlTask_this.source.fullName}'", exception);
+ } on URISyntaxException catch (e) {
}
}
}
@@ -6590,12 +6831,15 @@
}
}
TimeCounter_TimeCounterHandle counterHandleErrors = PerformanceStatistics.errors.start();
- ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
- ErrorVerifier errorVerifier = new ErrorVerifier(errorReporter, _libraryElement, typeProvider, inheritanceManager);
- unit.accept(errorVerifier);
- ConstantVerifier constantVerifier = new ConstantVerifier(errorReporter, typeProvider);
- unit.accept(constantVerifier);
- counterHandleErrors.stop();
+ try {
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
+ ErrorVerifier errorVerifier = new ErrorVerifier(errorReporter, _libraryElement, typeProvider, inheritanceManager);
+ unit.accept(errorVerifier);
+ ConstantVerifier constantVerifier = new ConstantVerifier(errorReporter, typeProvider);
+ unit.accept(constantVerifier);
+ } finally {
+ counterHandleErrors.stop();
+ }
unit.resolutionErrors = errorListener.errors;
resolvedUnit = unit;
}
diff --git a/pkg/analyzer_experimental/lib/src/generated/error.dart b/pkg/analyzer_experimental/lib/src/generated/error.dart
index 7c5d24d..27b527c 100644
--- a/pkg/analyzer_experimental/lib/src/generated/error.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/error.dart
@@ -657,7 +657,7 @@
* Extra analysis run over the code to follow best practices, which are not in the Dart Language
* Specification.
*/
- static final ErrorType HINT = new ErrorType('HINT', 1, ErrorSeverity.WARNING);
+ static final ErrorType HINT = new ErrorType('HINT', 1, ErrorSeverity.INFO);
/**
* Compile-time errors are errors that preclude execution. A compile time error must be reported
@@ -741,67 +741,54 @@
static final CompileTimeErrorCode ARGUMENT_DEFINITION_TEST_NON_PARAMETER = new CompileTimeErrorCode.con1('ARGUMENT_DEFINITION_TEST_NON_PARAMETER', 1, "'%s' is not a parameter");
/**
- * 12.14.2 Binding Actuals to Formals: In checked mode, it is a dynamic type error if
- * <i>o<sub>i</sub></i> is not <b>null</b> and the actual type of <i>p<sub>i</sub></i> is not a
- * supertype of the type of <i>o<sub>i</sub></i>, i = 1..m.
- *
- * 12.11.2 Const: It is a compile-time error if evaluation of a constant object results in an
- * uncaught exception being thrown.
- *
- * @param requiredCount the maximum number of positional arguments
- * @param argumentCount the actual number of positional arguments given
- */
- static final CompileTimeErrorCode ARGUMENT_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('ARGUMENT_TYPE_NOT_ASSIGNABLE', 2, "The argument type '%s' cannot be assigned to the parameter type '%s'");
-
- /**
* 12.30 Identifier Reference: It is a compile-time error to use a built-in identifier other than
* dynamic as a type annotation.
*/
- static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE', 3, "The built-in identifier '%s' cannot be as a type");
+ static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE', 2, "The built-in identifier '%s' cannot be as a type");
/**
* 12.30 Identifier Reference: It is a compile-time error if a built-in identifier is used as the
* declared name of a class, type parameter or type alias.
*/
- static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE_NAME', 4, "The built-in identifier '%s' cannot be used as a type name");
+ static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE_NAME', 3, "The built-in identifier '%s' cannot be used as a type name");
/**
* 12.30 Identifier Reference: It is a compile-time error if a built-in identifier is used as the
* declared name of a class, type parameter or type alias.
*/
- static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME', 5, "The built-in identifier '%s' cannot be used as a type alias name");
+ static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME', 4, "The built-in identifier '%s' cannot be used as a type alias name");
/**
* 12.30 Identifier Reference: It is a compile-time error if a built-in identifier is used as the
* declared name of a class, type parameter or type alias.
*/
- static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME', 6, "The built-in identifier '%s' cannot be used as a type parameter name");
+ static final CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME = new CompileTimeErrorCode.con1('BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME', 5, "The built-in identifier '%s' cannot be used as a type parameter name");
/**
* 13.9 Switch: It is a compile-time error if the class <i>C</i> implements the operator
* <i>==</i>.
*/
- static final CompileTimeErrorCode CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS = new CompileTimeErrorCode.con1('CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS', 7, "The switch case expression type '%s' cannot override the == operator");
+ static final CompileTimeErrorCode CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS = new CompileTimeErrorCode.con1('CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS', 6, "The switch case expression type '%s' cannot override the == operator");
/**
* 12.1 Constants: It is a compile-time error if evaluation of a compile-time constant would raise
* an exception.
*/
- static final CompileTimeErrorCode COMPILE_TIME_CONSTANT_RAISES_EXCEPTION = new CompileTimeErrorCode.con1('COMPILE_TIME_CONSTANT_RAISES_EXCEPTION', 8, "");
+ static final CompileTimeErrorCode COMPILE_TIME_CONSTANT_RAISES_EXCEPTION = new CompileTimeErrorCode.con1('COMPILE_TIME_CONSTANT_RAISES_EXCEPTION', 7, "");
/**
* 7.2 Getters: It is a compile-time error if a class has both a getter and a method with the same
* name. This restriction holds regardless of whether the getter is defined explicitly or
* implicitly, or whether the getter or the method are inherited or not.
*/
- static final CompileTimeErrorCode CONFLICTING_GETTER_AND_METHOD = new CompileTimeErrorCode.con1('CONFLICTING_GETTER_AND_METHOD', 9, "Class '%s' cannot have both getter '%s.%s' and method with the same name");
+ static final CompileTimeErrorCode CONFLICTING_GETTER_AND_METHOD = new CompileTimeErrorCode.con1('CONFLICTING_GETTER_AND_METHOD', 8, "Class '%s' cannot have both getter '%s.%s' and method with the same name");
/**
* 7.2 Getters: It is a compile-time error if a class has both a getter and a method with the same
* name. This restriction holds regardless of whether the getter is defined explicitly or
* implicitly, or whether the getter or the method are inherited or not.
*/
- static final CompileTimeErrorCode CONFLICTING_METHOD_AND_GETTER = new CompileTimeErrorCode.con1('CONFLICTING_METHOD_AND_GETTER', 10, "Class '%s' cannot have both method '%s.%s' and getter with the same name");
+ static final CompileTimeErrorCode CONFLICTING_METHOD_AND_GETTER = new CompileTimeErrorCode.con1('CONFLICTING_METHOD_AND_GETTER', 9, "Class '%s' cannot have both method '%s.%s' and getter with the same name");
/**
* 7.6 Constructors: A constructor name always begins with the name of its immediately enclosing
@@ -809,7 +796,7 @@
* compile-time error if <i>id</i> is the name of a member declared in the immediately enclosing
* class.
*/
- static final CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD = new CompileTimeErrorCode.con1('CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD', 11, "'%s' cannot be used to name a constructor and a field in this class");
+ static final CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD = new CompileTimeErrorCode.con1('CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD', 10, "'%s' cannot be used to name a constructor and a field in this class");
/**
* 7.6 Constructors: A constructor name always begins with the name of its immediately enclosing
@@ -817,20 +804,20 @@
* compile-time error if <i>id</i> is the name of a member declared in the immediately enclosing
* class.
*/
- static final CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD = new CompileTimeErrorCode.con1('CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD', 12, "'%s' cannot be used to name a constructor and a method in this class");
+ static final CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD = new CompileTimeErrorCode.con1('CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD', 11, "'%s' cannot be used to name a constructor and a method in this class");
/**
* 12.11.2 Const: It is a compile-time error if evaluation of a constant object results in an
* uncaught exception being thrown.
*/
- static final CompileTimeErrorCode CONST_CONSTRUCTOR_THROWS_EXCEPTION = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_THROWS_EXCEPTION', 13, "'const' constructors cannot throw exceptions");
+ static final CompileTimeErrorCode CONST_CONSTRUCTOR_THROWS_EXCEPTION = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_THROWS_EXCEPTION', 12, "'const' constructors cannot throw exceptions");
/**
* 7.6.3 Constant Constructors: The superinitializer that appears, explicitly or implicitly, in
* the initializer list of a constant constructor must specify a constant constructor of the
* superclass of the immediately enclosing class or a compile-time error occurs.
*/
- static final CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER', 14, "Constant constructor cannot call non-constant super constructor");
+ static final CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER', 13, "Constant constructor cannot call non-constant super constructor");
/**
* 7.6.3 Constant Constructors: It is a compile-time error if a constant constructor is declared
@@ -838,7 +825,7 @@
*
* The above refers to both locally declared and inherited instance variables.
*/
- static final CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD', 15, "Cannot define the 'const' constructor for a class with non-final fields");
+ static final CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD = new CompileTimeErrorCode.con1('CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD', 14, "Cannot define the 'const' constructor for a class with non-final fields");
/**
* 7.6.1 Generative Constructors: In checked mode, it is a dynamic type error if o is not
@@ -851,25 +838,25 @@
* @param initializerType the name of the type of the initializer expression
* @param fieldType the name of the type of the field
*/
- static final CompileTimeErrorCode CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE', 16, "The initializer type '%s' cannot be assigned to the field type '%s'");
+ static final CompileTimeErrorCode CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE', 15, "The initializer type '%s' cannot be assigned to the field type '%s'");
/**
* 6.2 Formal Parameters: It is a compile-time error if a formal parameter is declared as a
* constant variable.
*/
- static final CompileTimeErrorCode CONST_FORMAL_PARAMETER = new CompileTimeErrorCode.con1('CONST_FORMAL_PARAMETER', 17, "Parameters cannot be 'const'");
+ static final CompileTimeErrorCode CONST_FORMAL_PARAMETER = new CompileTimeErrorCode.con1('CONST_FORMAL_PARAMETER', 16, "Parameters cannot be 'const'");
/**
* 5 Variables: A constant variable must be initialized to a compile-time constant or a
* compile-time error occurs.
*/
- static final CompileTimeErrorCode CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE = new CompileTimeErrorCode.con1('CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE', 18, "'const' variables must be constant value");
+ static final CompileTimeErrorCode CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE = new CompileTimeErrorCode.con1('CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE', 17, "'const' variables must be constant value");
/**
* 7.5 Instance Variables: It is a compile-time error if an instance variable is declared to be
* constant.
*/
- static final CompileTimeErrorCode CONST_INSTANCE_FIELD = new CompileTimeErrorCode.con1('CONST_INSTANCE_FIELD', 19, "Only static fields can be declared as 'const'");
+ static final CompileTimeErrorCode CONST_INSTANCE_FIELD = new CompileTimeErrorCode.con1('CONST_INSTANCE_FIELD', 18, "Only static fields can be declared as 'const'");
/**
* 5 Variables: A constant variable must be initialized to a compile-time constant (12.1) or a
@@ -877,45 +864,45 @@
*
* @param name the name of the uninitialized final variable
*/
- static final CompileTimeErrorCode CONST_NOT_INITIALIZED = new CompileTimeErrorCode.con1('CONST_NOT_INITIALIZED', 20, "The const variable '%s' must be initialized");
+ static final CompileTimeErrorCode CONST_NOT_INITIALIZED = new CompileTimeErrorCode.con1('CONST_NOT_INITIALIZED', 19, "The const variable '%s' must be initialized");
/**
* 12.11.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2, where e, e1 and e2
* are constant expressions that evaluate to a boolean value.
*/
- static final CompileTimeErrorCode CONST_EVAL_TYPE_BOOL = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_BOOL', 21, "An expression of type 'bool' was expected");
+ static final CompileTimeErrorCode CONST_EVAL_TYPE_BOOL = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_BOOL', 20, "An expression of type 'bool' was expected");
/**
* 12.11.2 Const: An expression of one of the forms e1 == e2 or e1 != e2 where e1 and e2 are
* constant expressions that evaluate to a numeric, string or boolean value or to null.
*/
- static final CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_NUM_STRING = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_BOOL_NUM_STRING', 22, "An expression of type 'bool', 'num', 'String' or 'null' was expected");
+ static final CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_NUM_STRING = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_BOOL_NUM_STRING', 21, "An expression of type 'bool', 'num', 'String' or 'null' was expected");
/**
* 12.11.2 Const: An expression of one of the forms ~e, e1 ^ e2, e1 & e2, e1 | e2, e1 >> e2 or e1
* << e2, where e, e1 and e2 are constant expressions that evaluate to an integer value or to
* null.
*/
- static final CompileTimeErrorCode CONST_EVAL_TYPE_INT = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_INT', 23, "An expression of type 'int' was expected");
+ static final CompileTimeErrorCode CONST_EVAL_TYPE_INT = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_INT', 22, "An expression of type 'int' was expected");
/**
* 12.11.2 Const: An expression of one of the forms e, e1 + e2, e1 - e2, e1 * e2, e1 / e2, e1 ~/
* e2, e1 > e2, e1 < e2, e1 >= e2, e1 <= e2 or e1 % e2, where e, e1 and e2 are constant
* expressions that evaluate to a numeric value or to null..
*/
- static final CompileTimeErrorCode CONST_EVAL_TYPE_NUM = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_NUM', 24, "An expression of type 'num' was expected");
+ static final CompileTimeErrorCode CONST_EVAL_TYPE_NUM = new CompileTimeErrorCode.con1('CONST_EVAL_TYPE_NUM', 23, "An expression of type 'num' was expected");
/**
* 12.11.2 Const: It is a compile-time error if evaluation of a constant object results in an
* uncaught exception being thrown.
*/
- static final CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION = new CompileTimeErrorCode.con1('CONST_EVAL_THROWS_EXCEPTION', 25, "Evaluation of this constant expression causes exception");
+ static final CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION = new CompileTimeErrorCode.con1('CONST_EVAL_THROWS_EXCEPTION', 24, "Evaluation of this constant expression causes exception");
/**
* 12.11.2 Const: It is a compile-time error if evaluation of a constant object results in an
* uncaught exception being thrown.
*/
- static final CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE = new CompileTimeErrorCode.con1('CONST_EVAL_THROWS_IDBZE', 26, "Evaluation of this constant expression throws IntegerDivisionByZeroException");
+ static final CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE = new CompileTimeErrorCode.con1('CONST_EVAL_THROWS_IDBZE', 25, "Evaluation of this constant expression throws IntegerDivisionByZeroException");
/**
* 12.11.2 Const: If <i>T</i> is a parameterized type <i>S<U<sub>1</sub>, …,
@@ -928,7 +915,7 @@
* @see CompileTimeErrorCode#NEW_WITH_INVALID_TYPE_PARAMETERS
* @see StaticTypeWarningCode#WRONG_NUMBER_OF_TYPE_ARGUMENTS
*/
- static final CompileTimeErrorCode CONST_WITH_INVALID_TYPE_PARAMETERS = new CompileTimeErrorCode.con1('CONST_WITH_INVALID_TYPE_PARAMETERS', 27, "The type '%s' is declared with %d type parameters, but %d type arguments were given");
+ static final CompileTimeErrorCode CONST_WITH_INVALID_TYPE_PARAMETERS = new CompileTimeErrorCode.con1('CONST_WITH_INVALID_TYPE_PARAMETERS', 26, "The type '%s' is declared with %d type parameters, but %d type arguments were given");
/**
* 12.11.2 Const: If <i>e</i> is of the form <i>const T(a<sub>1</sub>, …, a<sub>n</sub>,
@@ -936,13 +923,13 @@
* compile-time error if the type <i>T</i> does not declare a constant constructor with the same
* name as the declaration of <i>T</i>.
*/
- static final CompileTimeErrorCode CONST_WITH_NON_CONST = new CompileTimeErrorCode.con1('CONST_WITH_NON_CONST', 28, "The constructor being called is not a 'const' constructor");
+ static final CompileTimeErrorCode CONST_WITH_NON_CONST = new CompileTimeErrorCode.con1('CONST_WITH_NON_CONST', 27, "The constructor being called is not a 'const' constructor");
/**
* 12.11.2 Const: In all of the above cases, it is a compile-time error if <i>a<sub>i</sub>, 1
* <= i <= n + k</i>, is not a compile-time constant expression.
*/
- static final CompileTimeErrorCode CONST_WITH_NON_CONSTANT_ARGUMENT = new CompileTimeErrorCode.con1('CONST_WITH_NON_CONSTANT_ARGUMENT', 29, "Arguments of a constant creation must be constant expressions");
+ static final CompileTimeErrorCode CONST_WITH_NON_CONSTANT_ARGUMENT = new CompileTimeErrorCode.con1('CONST_WITH_NON_CONSTANT_ARGUMENT', 28, "Arguments of a constant creation must be constant expressions");
/**
* 12.11.2 Const: It is a compile-time error if <i>T</i> is not a class accessible in the current
@@ -955,12 +942,12 @@
*
* @param name the name of the non-type element
*/
- static final CompileTimeErrorCode CONST_WITH_NON_TYPE = new CompileTimeErrorCode.con1('CONST_WITH_NON_TYPE', 30, "The name '%s' is not a class");
+ static final CompileTimeErrorCode CONST_WITH_NON_TYPE = new CompileTimeErrorCode.con1('CONST_WITH_NON_TYPE', 29, "The name '%s' is not a class");
/**
* 12.11.2 Const: It is a compile-time error if <i>T</i> includes any type parameters.
*/
- static final CompileTimeErrorCode CONST_WITH_TYPE_PARAMETERS = new CompileTimeErrorCode.con1('CONST_WITH_TYPE_PARAMETERS', 31, "The constant creation cannot use a type parameter");
+ static final CompileTimeErrorCode CONST_WITH_TYPE_PARAMETERS = new CompileTimeErrorCode.con1('CONST_WITH_TYPE_PARAMETERS', 30, "The constant creation cannot use a type parameter");
/**
* 12.11.2 Const: It is a compile-time error if <i>T.id</i> is not the name of a constant
@@ -969,7 +956,7 @@
* @param typeName the name of the type
* @param constructorName the name of the requested constant constructor
*/
- static final CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR = new CompileTimeErrorCode.con1('CONST_WITH_UNDEFINED_CONSTRUCTOR', 32, "The class '%s' does not have a constant constructor '%s'");
+ static final CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR = new CompileTimeErrorCode.con1('CONST_WITH_UNDEFINED_CONSTRUCTOR', 31, "The class '%s' does not have a constant constructor '%s'");
/**
* 12.11.2 Const: It is a compile-time error if <i>T.id</i> is not the name of a constant
@@ -977,26 +964,26 @@
*
* @param typeName the name of the type
*/
- static final CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT = new CompileTimeErrorCode.con1('CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT', 33, "The class '%s' does not have a default constant constructor");
+ static final CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT = new CompileTimeErrorCode.con1('CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT', 32, "The class '%s' does not have a default constant constructor");
/**
* 15.3.1 Typedef: It is a compile-time error if any default values are specified in the signature
* of a function type alias.
*/
- static final CompileTimeErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS = new CompileTimeErrorCode.con1('DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS', 34, "Default values aren't allowed in typedefs");
+ static final CompileTimeErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS = new CompileTimeErrorCode.con1('DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS', 33, "Default values aren't allowed in typedefs");
/**
* 6.2.1 Required Formals: By means of a function signature that names the parameter and describes
* its type as a function type. It is a compile-time error if any default values are specified in
* the signature of such a function type.
*/
- static final CompileTimeErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER = new CompileTimeErrorCode.con1('DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER', 35, "Default values aren't allowed in function type parameters");
+ static final CompileTimeErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER = new CompileTimeErrorCode.con1('DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER', 34, "Default values aren't allowed in function type parameters");
/**
* 3.1 Scoping: It is a compile-time error if there is more than one entity with the same name
* declared in the same scope.
*/
- static final CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_DEFAULT = new CompileTimeErrorCode.con1('DUPLICATE_CONSTRUCTOR_DEFAULT', 36, "The default constructor is already defined");
+ static final CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_DEFAULT = new CompileTimeErrorCode.con1('DUPLICATE_CONSTRUCTOR_DEFAULT', 35, "The default constructor is already defined");
/**
* 3.1 Scoping: It is a compile-time error if there is more than one entity with the same name
@@ -1004,7 +991,7 @@
*
* @param duplicateName the name of the duplicate entity
*/
- static final CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_NAME = new CompileTimeErrorCode.con1('DUPLICATE_CONSTRUCTOR_NAME', 37, "The constructor with name '%s' is already defined");
+ static final CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_NAME = new CompileTimeErrorCode.con1('DUPLICATE_CONSTRUCTOR_NAME', 36, "The constructor with name '%s' is already defined");
/**
* 3.1 Scoping: It is a compile-time error if there is more than one entity with the same name
@@ -1017,7 +1004,7 @@
*
* @param duplicateName the name of the duplicate entity
*/
- static final CompileTimeErrorCode DUPLICATE_DEFINITION = new CompileTimeErrorCode.con1('DUPLICATE_DEFINITION', 38, "The name '%s' is already defined");
+ static final CompileTimeErrorCode DUPLICATE_DEFINITION = new CompileTimeErrorCode.con1('DUPLICATE_DEFINITION', 37, "The name '%s' is already defined");
/**
* 7. Classes: It is a compile-time error if a class has an instance member and a static member
@@ -1029,21 +1016,21 @@
* @param name the name of the conflicting members
* @see #DUPLICATE_DEFINITION
*/
- static final CompileTimeErrorCode DUPLICATE_DEFINITION_INHERITANCE = new CompileTimeErrorCode.con1('DUPLICATE_DEFINITION_INHERITANCE', 39, "The name '%s' is already defined in '%s'");
+ static final CompileTimeErrorCode DUPLICATE_DEFINITION_INHERITANCE = new CompileTimeErrorCode.con1('DUPLICATE_DEFINITION_INHERITANCE', 38, "The name '%s' is already defined in '%s'");
/**
* 12.14.2 Binding Actuals to Formals: It is a compile-time error if <i>q<sub>i</sub> =
* q<sub>j</sub></i> for any <i>i != j</i> [where <i>q<sub>i</sub></i> is the label for a named
* argument].
*/
- static final CompileTimeErrorCode DUPLICATE_NAMED_ARGUMENT = new CompileTimeErrorCode.con1('DUPLICATE_NAMED_ARGUMENT', 40, "The argument for the named parameter '%s' was already specified");
+ static final CompileTimeErrorCode DUPLICATE_NAMED_ARGUMENT = new CompileTimeErrorCode.con1('DUPLICATE_NAMED_ARGUMENT', 39, "The argument for the named parameter '%s' was already specified");
/**
* SDK implementation libraries can be exported only by other SDK libraries.
*
* @param uri the uri pointing to a library
*/
- static final CompileTimeErrorCode EXPORT_INTERNAL_LIBRARY = new CompileTimeErrorCode.con1('EXPORT_INTERNAL_LIBRARY', 41, "The library '%s' is internal and cannot be exported");
+ static final CompileTimeErrorCode EXPORT_INTERNAL_LIBRARY = new CompileTimeErrorCode.con1('EXPORT_INTERNAL_LIBRARY', 40, "The library '%s' is internal and cannot be exported");
/**
* 14.2 Exports: It is a compile-time error if the compilation unit found at the specified URI is
@@ -1051,7 +1038,7 @@
*
* @param uri the uri pointing to a non-library declaration
*/
- static final CompileTimeErrorCode EXPORT_OF_NON_LIBRARY = new CompileTimeErrorCode.con1('EXPORT_OF_NON_LIBRARY', 42, "The exported library '%s' must not have a part-of directive");
+ static final CompileTimeErrorCode EXPORT_OF_NON_LIBRARY = new CompileTimeErrorCode.con1('EXPORT_OF_NON_LIBRARY', 41, "The exported library '%s' must not have a part-of directive");
/**
* 7.9 Superclasses: It is a compile-time error if the extends clause of a class <i>C</i> includes
@@ -1059,7 +1046,7 @@
*
* @param typeName the name of the superclass that was not found
*/
- static final CompileTimeErrorCode EXTENDS_NON_CLASS = new CompileTimeErrorCode.con1('EXTENDS_NON_CLASS', 43, "Classes can only extend other classes");
+ static final CompileTimeErrorCode EXTENDS_NON_CLASS = new CompileTimeErrorCode.con1('EXTENDS_NON_CLASS', 42, "Classes can only extend other classes");
/**
* 12.2 Null: It is a compile-time error for a class to attempt to extend or implement Null.
@@ -1078,7 +1065,7 @@
* @param typeName the name of the type that cannot be extended
* @see #IMPLEMENTS_DISALLOWED_CLASS
*/
- static final CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('EXTENDS_DISALLOWED_CLASS', 44, "Classes cannot extend '%s'");
+ static final CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('EXTENDS_DISALLOWED_CLASS', 43, "Classes cannot extend '%s'");
/**
* 12.14.2 Binding Actuals to Formals: It is a static warning if <i>m < h</i> or if <i>m >
@@ -1090,21 +1077,21 @@
* @param requiredCount the maximum number of positional arguments
* @param argumentCount the actual number of positional arguments given
*/
- static final CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS = new CompileTimeErrorCode.con1('EXTRA_POSITIONAL_ARGUMENTS', 45, "%d positional arguments expected, but %d found");
+ static final CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS = new CompileTimeErrorCode.con1('EXTRA_POSITIONAL_ARGUMENTS', 44, "%d positional arguments expected, but %d found");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It is a compile time
* error if more than one initializer corresponding to a given instance variable appears in
* <i>k</i>'s list.
*/
- static final CompileTimeErrorCode FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS = new CompileTimeErrorCode.con1('FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS', 46, "The field '%s' cannot be initialized twice in the same constructor");
+ static final CompileTimeErrorCode FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS = new CompileTimeErrorCode.con1('FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS', 45, "The field '%s' cannot be initialized twice in the same constructor");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It is a compile time
* error if <i>k</i>'s initializer list contains an initializer for a variable that is initialized
* by means of an initializing formal of <i>k</i>.
*/
- static final CompileTimeErrorCode FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER = new CompileTimeErrorCode.con1('FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER', 47, "Fields cannot be initialized in both the parameter list and the initializers");
+ static final CompileTimeErrorCode FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER = new CompileTimeErrorCode.con1('FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER', 46, "Fields cannot be initialized in both the parameter list and the initializers");
/**
* 5 Variables: It is a compile-time error if a final instance variable that has is initialized by
@@ -1113,19 +1100,19 @@
*
* @param name the name of the field in question
*/
- static final CompileTimeErrorCode FINAL_INITIALIZED_MULTIPLE_TIMES = new CompileTimeErrorCode.con1('FINAL_INITIALIZED_MULTIPLE_TIMES', 48, "'%s' is a final field and so can only be set once");
+ static final CompileTimeErrorCode FINAL_INITIALIZED_MULTIPLE_TIMES = new CompileTimeErrorCode.con1('FINAL_INITIALIZED_MULTIPLE_TIMES', 47, "'%s' is a final field and so can only be set once");
/**
* 7.6.1 Generative Constructors: It is a compile-time error if an initializing formal is used by
* a function other than a non-redirecting generative constructor.
*/
- static final CompileTimeErrorCode FIELD_INITIALIZER_FACTORY_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_FACTORY_CONSTRUCTOR', 49, "Initializing formal fields cannot be used in factory constructors");
+ static final CompileTimeErrorCode FIELD_INITIALIZER_FACTORY_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_FACTORY_CONSTRUCTOR', 48, "Initializing formal fields cannot be used in factory constructors");
/**
* 7.6.1 Generative Constructors: It is a compile-time error if an initializing formal is used by
* a function other than a non-redirecting generative constructor.
*/
- static final CompileTimeErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 50, "Initializing formal fields can only be used in constructors");
+ static final CompileTimeErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 49, "Initializing formal fields can only be used in constructors");
/**
* 7.6.1 Generative Constructors: A generative constructor may be redirecting, in which case its
@@ -1134,7 +1121,7 @@
* 7.6.1 Generative Constructors: It is a compile-time error if an initializing formal is used by
* a function other than a non-redirecting generative constructor.
*/
- static final CompileTimeErrorCode FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR', 51, "The redirecting constructor cannot have a field initializer");
+ static final CompileTimeErrorCode FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR = new CompileTimeErrorCode.con1('FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR', 50, "The redirecting constructor cannot have a field initializer");
/**
* 7.2 Getters: It is a compile-time error if a class has both a getter and a method with the same
@@ -1142,7 +1129,7 @@
*
* @param name the conflicting name of the getter and method
*/
- static final CompileTimeErrorCode GETTER_AND_METHOD_WITH_SAME_NAME = new CompileTimeErrorCode.con1('GETTER_AND_METHOD_WITH_SAME_NAME', 52, "'%s' cannot be used to name a getter, there is already a method with the same name");
+ static final CompileTimeErrorCode GETTER_AND_METHOD_WITH_SAME_NAME = new CompileTimeErrorCode.con1('GETTER_AND_METHOD_WITH_SAME_NAME', 51, "'%s' cannot be used to name a getter, there is already a method with the same name");
/**
* 12.2 Null: It is a compile-time error for a class to attempt to extend or implement Null.
@@ -1161,13 +1148,13 @@
* @param typeName the name of the type that cannot be implemented
* @see #EXTENDS_DISALLOWED_CLASS
*/
- static final CompileTimeErrorCode IMPLEMENTS_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_DISALLOWED_CLASS', 53, "Classes cannot implement '%s'");
+ static final CompileTimeErrorCode IMPLEMENTS_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_DISALLOWED_CLASS', 52, "Classes cannot implement '%s'");
/**
* 7.10 Superinterfaces: It is a compile-time error if the implements clause of a class includes
* type dynamic.
*/
- static final CompileTimeErrorCode IMPLEMENTS_DYNAMIC = new CompileTimeErrorCode.con1('IMPLEMENTS_DYNAMIC', 54, "Classes cannot implement 'dynamic'");
+ static final CompileTimeErrorCode IMPLEMENTS_DYNAMIC = new CompileTimeErrorCode.con1('IMPLEMENTS_DYNAMIC', 53, "Classes cannot implement 'dynamic'");
/**
* 7.10 Superinterfaces: It is a compile-time error if the implements clause of a class <i>C</i>
@@ -1176,7 +1163,7 @@
*
* @param typeName the name of the interface that was not found
*/
- static final CompileTimeErrorCode IMPLEMENTS_NON_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_NON_CLASS', 55, "Classes can only implement other classes");
+ static final CompileTimeErrorCode IMPLEMENTS_NON_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_NON_CLASS', 54, "Classes can only implement other classes");
/**
* 7.10 Superinterfaces: It is a compile-time error if a type <i>T</i> appears more than once in
@@ -1184,7 +1171,7 @@
*
* @param className the name of the class that is implemented more than once
*/
- static final CompileTimeErrorCode IMPLEMENTS_REPEATED = new CompileTimeErrorCode.con1('IMPLEMENTS_REPEATED', 56, "'%s' can only be implemented once");
+ static final CompileTimeErrorCode IMPLEMENTS_REPEATED = new CompileTimeErrorCode.con1('IMPLEMENTS_REPEATED', 55, "'%s' can only be implemented once");
/**
* 7.10 Superinterfaces: It is a compile-time error if the superclass of a class <i>C</i> appears
@@ -1192,7 +1179,7 @@
*
* @param className the name of the class that appears in both "extends" and "implements" clauses
*/
- static final CompileTimeErrorCode IMPLEMENTS_SUPER_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_SUPER_CLASS', 57, "'%s' cannot be used in both 'extends' and 'implements' clauses");
+ static final CompileTimeErrorCode IMPLEMENTS_SUPER_CLASS = new CompileTimeErrorCode.con1('IMPLEMENTS_SUPER_CLASS', 56, "'%s' cannot be used in both 'extends' and 'implements' clauses");
/**
* 7.6.1 Generative Constructors: Note that <b>this</b> is not in scope on the right hand side of
@@ -1204,14 +1191,14 @@
*
* @param name the name of the type in question
*/
- static final CompileTimeErrorCode IMPLICIT_THIS_REFERENCE_IN_INITIALIZER = new CompileTimeErrorCode.con1('IMPLICIT_THIS_REFERENCE_IN_INITIALIZER', 58, "Only static members can be accessed in initializers");
+ static final CompileTimeErrorCode IMPLICIT_THIS_REFERENCE_IN_INITIALIZER = new CompileTimeErrorCode.con1('IMPLICIT_THIS_REFERENCE_IN_INITIALIZER', 57, "Only static members can be accessed in initializers");
/**
* SDK implementation libraries can be imported only by other SDK libraries.
*
* @param uri the uri pointing to a library
*/
- static final CompileTimeErrorCode IMPORT_INTERNAL_LIBRARY = new CompileTimeErrorCode.con1('IMPORT_INTERNAL_LIBRARY', 59, "The library '%s' is internal and cannot be imported");
+ static final CompileTimeErrorCode IMPORT_INTERNAL_LIBRARY = new CompileTimeErrorCode.con1('IMPORT_INTERNAL_LIBRARY', 58, "The library '%s' is internal and cannot be imported");
/**
* 14.1 Imports: It is a compile-time error if the compilation unit found at the specified URI is
@@ -1219,7 +1206,7 @@
*
* @param uri the uri pointing to a non-library declaration
*/
- static final CompileTimeErrorCode IMPORT_OF_NON_LIBRARY = new CompileTimeErrorCode.con1('IMPORT_OF_NON_LIBRARY', 60, "The imported library '%s' must not have a part-of directive");
+ static final CompileTimeErrorCode IMPORT_OF_NON_LIBRARY = new CompileTimeErrorCode.con1('IMPORT_OF_NON_LIBRARY', 59, "The imported library '%s' must not have a part-of directive");
/**
* 13.9 Switch: It is a compile-time error if values of the expressions <i>e<sub>k</sub></i> are
@@ -1228,7 +1215,7 @@
* @param expressionSource the expression source code that is the unexpected type
* @param expectedType the name of the expected type
*/
- static final CompileTimeErrorCode INCONSISTENT_CASE_EXPRESSION_TYPES = new CompileTimeErrorCode.con1('INCONSISTENT_CASE_EXPRESSION_TYPES', 61, "Case expressions must have the same types, '%s' is not a %s'");
+ static final CompileTimeErrorCode INCONSISTENT_CASE_EXPRESSION_TYPES = new CompileTimeErrorCode.con1('INCONSISTENT_CASE_EXPRESSION_TYPES', 60, "Case expressions must have the same types, '%s' is not a %s'");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It is a compile-time
@@ -1239,7 +1226,7 @@
* immediately enclosing class
* @see #INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD
*/
- static final CompileTimeErrorCode INITIALIZER_FOR_NON_EXISTANT_FIELD = new CompileTimeErrorCode.con1('INITIALIZER_FOR_NON_EXISTANT_FIELD', 62, "'%s' is not a variable in the enclosing class");
+ static final CompileTimeErrorCode INITIALIZER_FOR_NON_EXISTANT_FIELD = new CompileTimeErrorCode.con1('INITIALIZER_FOR_NON_EXISTANT_FIELD', 61, "'%s' is not a variable in the enclosing class");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It is a compile-time
@@ -1250,7 +1237,7 @@
* enclosing class
* @see #INITIALIZING_FORMAL_FOR_STATIC_FIELD
*/
- static final CompileTimeErrorCode INITIALIZER_FOR_STATIC_FIELD = new CompileTimeErrorCode.con1('INITIALIZER_FOR_STATIC_FIELD', 63, "'%s' is a static variable in the enclosing class, variables initialized in a constructor cannot be static");
+ static final CompileTimeErrorCode INITIALIZER_FOR_STATIC_FIELD = new CompileTimeErrorCode.con1('INITIALIZER_FOR_STATIC_FIELD', 62, "'%s' is a static variable in the enclosing class, variables initialized in a constructor cannot be static");
/**
* 7.6.1 Generative Constructors: An initializing formal has the form <i>this.id</i>. It is a
@@ -1262,7 +1249,7 @@
* @see #INITIALIZING_FORMAL_FOR_STATIC_FIELD
* @see #INITIALIZER_FOR_NON_EXISTANT_FIELD
*/
- static final CompileTimeErrorCode INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD = new CompileTimeErrorCode.con1('INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD', 64, "'%s' is not a variable in the enclosing class");
+ static final CompileTimeErrorCode INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD = new CompileTimeErrorCode.con1('INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD', 63, "'%s' is not a variable in the enclosing class");
/**
* 7.6.1 Generative Constructors: An initializing formal has the form <i>this.id</i>. It is a
@@ -1273,20 +1260,20 @@
* enclosing class
* @see #INITIALIZER_FOR_STATIC_FIELD
*/
- static final CompileTimeErrorCode INITIALIZING_FORMAL_FOR_STATIC_FIELD = new CompileTimeErrorCode.con1('INITIALIZING_FORMAL_FOR_STATIC_FIELD', 65, "'%s' is a static variable in the enclosing class, variables initialized in a constructor cannot be static");
+ static final CompileTimeErrorCode INITIALIZING_FORMAL_FOR_STATIC_FIELD = new CompileTimeErrorCode.con1('INITIALIZING_FORMAL_FOR_STATIC_FIELD', 64, "'%s' is a static variable in the enclosing class, variables initialized in a constructor cannot be static");
/**
* 12.30 Identifier Reference: Otherwise, e is equivalent to the property extraction
* <b>this</b>.<i>id</i>.
*/
- static final CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_STATIC = new CompileTimeErrorCode.con1('INSTANCE_MEMBER_ACCESS_FROM_STATIC', 66, "Instance member cannot be accessed from static method");
+ static final CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_STATIC = new CompileTimeErrorCode.con1('INSTANCE_MEMBER_ACCESS_FROM_STATIC', 65, "Instance member cannot be accessed from static method");
/**
* 11 Metadata: Metadata consists of a series of annotations, each of which begin with the
* character @, followed by a constant expression that must be either a reference to a
* compile-time constant variable, or a call to a constant constructor.
*/
- static final CompileTimeErrorCode INVALID_ANNOTATION = new CompileTimeErrorCode.con1('INVALID_ANNOTATION', 67, "Annotation can be only constant variable or constant constructor invocation");
+ static final CompileTimeErrorCode INVALID_ANNOTATION = new CompileTimeErrorCode.con1('INVALID_ANNOTATION', 66, "Annotation can be only constant variable or constant constructor invocation");
/**
* TODO(brianwilkerson) Remove this when we have decided on how to report errors in compile-time
@@ -1294,26 +1281,26 @@
*
* See TODOs in ConstantVisitor
*/
- static final CompileTimeErrorCode INVALID_CONSTANT = new CompileTimeErrorCode.con1('INVALID_CONSTANT', 68, "Invalid constant value");
+ static final CompileTimeErrorCode INVALID_CONSTANT = new CompileTimeErrorCode.con1('INVALID_CONSTANT', 67, "Invalid constant value");
/**
* 7.6 Constructors: It is a compile-time error if the name of a constructor is not a constructor
* name.
*/
- static final CompileTimeErrorCode INVALID_CONSTRUCTOR_NAME = new CompileTimeErrorCode.con1('INVALID_CONSTRUCTOR_NAME', 69, "Invalid constructor name");
+ static final CompileTimeErrorCode INVALID_CONSTRUCTOR_NAME = new CompileTimeErrorCode.con1('INVALID_CONSTRUCTOR_NAME', 68, "Invalid constructor name");
/**
* 7.6.2 Factories: It is a compile-time error if <i>M</i> is not the name of the immediately
* enclosing class.
*/
- static final CompileTimeErrorCode INVALID_FACTORY_NAME_NOT_A_CLASS = new CompileTimeErrorCode.con1('INVALID_FACTORY_NAME_NOT_A_CLASS', 70, "The name of the immediately enclosing class expected");
+ static final CompileTimeErrorCode INVALID_FACTORY_NAME_NOT_A_CLASS = new CompileTimeErrorCode.con1('INVALID_FACTORY_NAME_NOT_A_CLASS', 69, "The name of the immediately enclosing class expected");
/**
* 12.10 This: It is a compile-time error if this appears in a top-level function or variable
* initializer, in a factory constructor, or in a static method or variable initializer, or in the
* initializer of an instance variable.
*/
- static final CompileTimeErrorCode INVALID_REFERENCE_TO_THIS = new CompileTimeErrorCode.con1('INVALID_REFERENCE_TO_THIS', 71, "Invalid reference to 'this' expression");
+ static final CompileTimeErrorCode INVALID_REFERENCE_TO_THIS = new CompileTimeErrorCode.con1('INVALID_REFERENCE_TO_THIS', 70, "Invalid reference to 'this' expression");
/**
* 12.6 Lists: It is a compile time error if the type argument of a constant list literal includes
@@ -1321,7 +1308,7 @@
*
* @name the name of the type parameter
*/
- static final CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_LIST = new CompileTimeErrorCode.con1('INVALID_TYPE_ARGUMENT_IN_CONST_LIST', 72, "Constant list literals cannot include a type parameter as a type argument, such as '%s'");
+ static final CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_LIST = new CompileTimeErrorCode.con1('INVALID_TYPE_ARGUMENT_IN_CONST_LIST', 71, "Constant list literals cannot include a type parameter as a type argument, such as '%s'");
/**
* 12.7 Maps: It is a compile time error if the type arguments of a constant map literal include a
@@ -1329,7 +1316,7 @@
*
* @name the name of the type parameter
*/
- static final CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_MAP = new CompileTimeErrorCode.con1('INVALID_TYPE_ARGUMENT_IN_CONST_MAP', 73, "Constant map literals cannot include a type parameter as a type argument, such as '%s'");
+ static final CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_MAP = new CompileTimeErrorCode.con1('INVALID_TYPE_ARGUMENT_IN_CONST_MAP', 72, "Constant map literals cannot include a type parameter as a type argument, such as '%s'");
/**
* 14.2 Exports: It is a compile-time error if the compilation unit found at the specified URI is
@@ -1344,7 +1331,7 @@
* @param uri the URI that is invalid
* @see #URI_DOES_NOT_EXIST
*/
- static final CompileTimeErrorCode INVALID_URI = new CompileTimeErrorCode.con1('INVALID_URI', 74, "Invalid URI syntax: '%s'");
+ static final CompileTimeErrorCode INVALID_URI = new CompileTimeErrorCode.con1('INVALID_URI', 73, "Invalid URI syntax: '%s'");
/**
* 13.13 Break: It is a compile-time error if no such statement <i>s<sub>E</sub></i> exists within
@@ -1355,7 +1342,7 @@
*
* @param labelName the name of the unresolvable label
*/
- static final CompileTimeErrorCode LABEL_IN_OUTER_SCOPE = new CompileTimeErrorCode.con1('LABEL_IN_OUTER_SCOPE', 75, "Cannot reference label '%s' declared in an outer method");
+ static final CompileTimeErrorCode LABEL_IN_OUTER_SCOPE = new CompileTimeErrorCode.con1('LABEL_IN_OUTER_SCOPE', 74, "Cannot reference label '%s' declared in an outer method");
/**
* 13.13 Break: It is a compile-time error if no such statement <i>s<sub>E</sub></i> exists within
@@ -1366,7 +1353,7 @@
*
* @param labelName the name of the unresolvable label
*/
- static final CompileTimeErrorCode LABEL_UNDEFINED = new CompileTimeErrorCode.con1('LABEL_UNDEFINED', 76, "Cannot reference undefined label '%s'");
+ static final CompileTimeErrorCode LABEL_UNDEFINED = new CompileTimeErrorCode.con1('LABEL_UNDEFINED', 75, "Cannot reference undefined label '%s'");
/**
* 12.6 Lists: A run-time list literal <<i>E</i>> [<i>e<sub>1</sub></i> ...
@@ -1382,7 +1369,7 @@
* It is a static warning if <i>T<sub>j</sub></i> may not be assigned to <i>S<sub>j</sub>, 1 <=
* j <= m</i>.
*/
- static final CompileTimeErrorCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('LIST_ELEMENT_TYPE_NOT_ASSIGNABLE', 77, "The element type '%s' cannot be assigned to the list type '%s'");
+ static final CompileTimeErrorCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('LIST_ELEMENT_TYPE_NOT_ASSIGNABLE', 76, "The element type '%s' cannot be assigned to the list type '%s'");
/**
* 12.7 Map: A run-time map literal <<i>K</i>, <i>V</i>> [<i>k<sub>1</sub></i> :
@@ -1398,7 +1385,7 @@
* It is a static warning if <i>T<sub>j</sub></i> may not be assigned to <i>S<sub>j</sub>, 1 <=
* j <= m</i>.
*/
- static final CompileTimeErrorCode MAP_KEY_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('MAP_KEY_TYPE_NOT_ASSIGNABLE', 78, "The element type '%s' cannot be assigned to the map key type '%s'");
+ static final CompileTimeErrorCode MAP_KEY_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('MAP_KEY_TYPE_NOT_ASSIGNABLE', 77, "The element type '%s' cannot be assigned to the map key type '%s'");
/**
* 12.7 Map: A run-time map literal <<i>K</i>, <i>V</i>> [<i>k<sub>1</sub></i> :
@@ -1414,13 +1401,13 @@
* It is a static warning if <i>T<sub>j</sub></i> may not be assigned to <i>S<sub>j</sub>, 1 <=
* j <= m</i>.
*/
- static final CompileTimeErrorCode MAP_VALUE_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('MAP_VALUE_TYPE_NOT_ASSIGNABLE', 79, "The element type '%s' cannot be assigned to the map value type '%s'");
+ static final CompileTimeErrorCode MAP_VALUE_TYPE_NOT_ASSIGNABLE = new CompileTimeErrorCode.con1('MAP_VALUE_TYPE_NOT_ASSIGNABLE', 78, "The element type '%s' cannot be assigned to the map value type '%s'");
/**
* 7 Classes: It is a compile time error if a class <i>C</i> declares a member with the same name
* as <i>C</i>.
*/
- static final CompileTimeErrorCode MEMBER_WITH_CLASS_NAME = new CompileTimeErrorCode.con1('MEMBER_WITH_CLASS_NAME', 80, "Class members cannot have the same name as the enclosing class");
+ static final CompileTimeErrorCode MEMBER_WITH_CLASS_NAME = new CompileTimeErrorCode.con1('MEMBER_WITH_CLASS_NAME', 79, "Class members cannot have the same name as the enclosing class");
/**
* 7.2 Getters: It is a compile-time error if a class has both a getter and a method with the same
@@ -1428,17 +1415,17 @@
*
* @param name the conflicting name of the getter and method
*/
- static final CompileTimeErrorCode METHOD_AND_GETTER_WITH_SAME_NAME = new CompileTimeErrorCode.con1('METHOD_AND_GETTER_WITH_SAME_NAME', 81, "'%s' cannot be used to name a method, there is already a getter with the same name");
+ static final CompileTimeErrorCode METHOD_AND_GETTER_WITH_SAME_NAME = new CompileTimeErrorCode.con1('METHOD_AND_GETTER_WITH_SAME_NAME', 80, "'%s' cannot be used to name a method, there is already a getter with the same name");
/**
* 12.1 Constants: A constant expression is ... a constant list literal.
*/
- static final CompileTimeErrorCode MISSING_CONST_IN_LIST_LITERAL = new CompileTimeErrorCode.con1('MISSING_CONST_IN_LIST_LITERAL', 82, "List literals must be prefixed with 'const' when used as a constant expression");
+ static final CompileTimeErrorCode MISSING_CONST_IN_LIST_LITERAL = new CompileTimeErrorCode.con1('MISSING_CONST_IN_LIST_LITERAL', 81, "List literals must be prefixed with 'const' when used as a constant expression");
/**
* 12.1 Constants: A constant expression is ... a constant map literal.
*/
- static final CompileTimeErrorCode MISSING_CONST_IN_MAP_LITERAL = new CompileTimeErrorCode.con1('MISSING_CONST_IN_MAP_LITERAL', 83, "Map literals must be prefixed with 'const' when used as a constant expression");
+ static final CompileTimeErrorCode MISSING_CONST_IN_MAP_LITERAL = new CompileTimeErrorCode.con1('MISSING_CONST_IN_MAP_LITERAL', 82, "Map literals must be prefixed with 'const' when used as a constant expression");
/**
* 9 Mixins: It is a compile-time error if a declared or derived mixin explicitly declares a
@@ -1446,7 +1433,7 @@
*
* @param typeName the name of the mixin that is invalid
*/
- static final CompileTimeErrorCode MIXIN_DECLARES_CONSTRUCTOR = new CompileTimeErrorCode.con1('MIXIN_DECLARES_CONSTRUCTOR', 84, "The class '%s' cannot be used as a mixin because it declares a constructor");
+ static final CompileTimeErrorCode MIXIN_DECLARES_CONSTRUCTOR = new CompileTimeErrorCode.con1('MIXIN_DECLARES_CONSTRUCTOR', 83, "The class '%s' cannot be used as a mixin because it declares a constructor");
/**
* 9 Mixins: It is a compile-time error if a mixin is derived from a class whose superclass is not
@@ -1454,7 +1441,7 @@
*
* @param typeName the name of the mixin that is invalid
*/
- static final CompileTimeErrorCode MIXIN_INHERITS_FROM_NOT_OBJECT = new CompileTimeErrorCode.con1('MIXIN_INHERITS_FROM_NOT_OBJECT', 85, "The class '%s' cannot be used as a mixin because it extends a class other than Object");
+ static final CompileTimeErrorCode MIXIN_INHERITS_FROM_NOT_OBJECT = new CompileTimeErrorCode.con1('MIXIN_INHERITS_FROM_NOT_OBJECT', 84, "The class '%s' cannot be used as a mixin because it extends a class other than Object");
/**
* 12.2 Null: It is a compile-time error for a class to attempt to extend or implement Null.
@@ -1473,43 +1460,43 @@
* @param typeName the name of the type that cannot be extended
* @see #IMPLEMENTS_DISALLOWED_CLASS
*/
- static final CompileTimeErrorCode MIXIN_OF_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('MIXIN_OF_DISALLOWED_CLASS', 86, "Classes cannot mixin '%s'");
+ static final CompileTimeErrorCode MIXIN_OF_DISALLOWED_CLASS = new CompileTimeErrorCode.con1('MIXIN_OF_DISALLOWED_CLASS', 85, "Classes cannot mixin '%s'");
/**
* 9.1 Mixin Application: It is a compile-time error if <i>M</i> does not denote a class or mixin
* available in the immediately enclosing scope.
*/
- static final CompileTimeErrorCode MIXIN_OF_NON_CLASS = new CompileTimeErrorCode.con1('MIXIN_OF_NON_CLASS', 87, "Classes can only mixin other classes");
+ static final CompileTimeErrorCode MIXIN_OF_NON_CLASS = new CompileTimeErrorCode.con1('MIXIN_OF_NON_CLASS', 86, "Classes can only mixin other classes");
/**
* 9 Mixins: It is a compile-time error if a declared or derived mixin refers to super.
*/
- static final CompileTimeErrorCode MIXIN_REFERENCES_SUPER = new CompileTimeErrorCode.con1('MIXIN_REFERENCES_SUPER', 88, "The class '%s' cannot be used as a mixin because it references 'super'");
+ static final CompileTimeErrorCode MIXIN_REFERENCES_SUPER = new CompileTimeErrorCode.con1('MIXIN_REFERENCES_SUPER', 87, "The class '%s' cannot be used as a mixin because it references 'super'");
/**
* 9.1 Mixin Application: It is a compile-time error if <i>S</i> does not denote a class available
* in the immediately enclosing scope.
*/
- static final CompileTimeErrorCode MIXIN_WITH_NON_CLASS_SUPERCLASS = new CompileTimeErrorCode.con1('MIXIN_WITH_NON_CLASS_SUPERCLASS', 89, "Mixin can only be applied to class");
+ static final CompileTimeErrorCode MIXIN_WITH_NON_CLASS_SUPERCLASS = new CompileTimeErrorCode.con1('MIXIN_WITH_NON_CLASS_SUPERCLASS', 88, "Mixin can only be applied to class");
/**
* 7.6.1 Generative Constructors: A generative constructor may be redirecting, in which case its
* only action is to invoke another generative constructor.
*/
- static final CompileTimeErrorCode MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS = new CompileTimeErrorCode.con1('MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS', 90, "Constructor may have at most one 'this' redirection");
+ static final CompileTimeErrorCode MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS = new CompileTimeErrorCode.con1('MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS', 89, "Constructor may have at most one 'this' redirection");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. Then <i>k</i> may
* include at most one superinitializer in its initializer list or a compile time error occurs.
*/
- static final CompileTimeErrorCode MULTIPLE_SUPER_INITIALIZERS = new CompileTimeErrorCode.con1('MULTIPLE_SUPER_INITIALIZERS', 91, "Constructor may have at most one 'super' initializer");
+ static final CompileTimeErrorCode MULTIPLE_SUPER_INITIALIZERS = new CompileTimeErrorCode.con1('MULTIPLE_SUPER_INITIALIZERS', 90, "Constructor may have at most one 'super' initializer");
/**
* 11 Metadata: Metadata consists of a series of annotations, each of which begin with the
* character @, followed by a constant expression that must be either a reference to a
* compile-time constant variable, or a call to a constant constructor.
*/
- static final CompileTimeErrorCode NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS = new CompileTimeErrorCode.con1('NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS', 92, "Annotation creation must have arguments");
+ static final CompileTimeErrorCode NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS = new CompileTimeErrorCode.con1('NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS', 91, "Annotation creation must have arguments");
/**
* 7.6.1 Generative Constructors: If no superinitializer is provided, an implicit superinitializer
@@ -1519,7 +1506,7 @@
* 7.6.1 Generative constructors. It is a compile-time error if class <i>S</i> does not declare a
* generative constructor named <i>S</i> (respectively <i>S.id</i>)
*/
- static final CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT = new CompileTimeErrorCode.con1('NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT', 93, "The class '%s' does not have a default constructor");
+ static final CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT = new CompileTimeErrorCode.con1('NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT', 92, "The class '%s' does not have a default constructor");
/**
* 7.6 Constructors: Iff no constructor is specified for a class <i>C</i>, it implicitly has a
@@ -1528,13 +1515,13 @@
* 7.6.1 Generative constructors. It is a compile-time error if class <i>S</i> does not declare a
* generative constructor named <i>S</i> (respectively <i>S.id</i>)
*/
- static final CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT = new CompileTimeErrorCode.con1('NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT', 94, "The class '%s' does not have a default constructor");
+ static final CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT = new CompileTimeErrorCode.con1('NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT', 93, "The class '%s' does not have a default constructor");
/**
* 13.2 Expression Statements: It is a compile-time error if a non-constant map literal that has
* no explicit type arguments appears in a place where a statement is expected.
*/
- static final CompileTimeErrorCode NON_CONST_MAP_AS_EXPRESSION_STATEMENT = new CompileTimeErrorCode.con1('NON_CONST_MAP_AS_EXPRESSION_STATEMENT', 95, "A non-constant map literal without type arguments cannot be used as an expression statement");
+ static final CompileTimeErrorCode NON_CONST_MAP_AS_EXPRESSION_STATEMENT = new CompileTimeErrorCode.con1('NON_CONST_MAP_AS_EXPRESSION_STATEMENT', 94, "A non-constant map literal without type arguments cannot be used as an expression statement");
/**
* 13.9 Switch: Given a switch statement of the form <i>switch (e) { label<sub>11</sub> …
@@ -1545,44 +1532,44 @@
* s<sub>n</sub>}</i>, it is a compile-time error if the expressions <i>e<sub>k</sub></i> are not
* compile-time constants, for all <i>1 <= k <= n</i>.
*/
- static final CompileTimeErrorCode NON_CONSTANT_CASE_EXPRESSION = new CompileTimeErrorCode.con1('NON_CONSTANT_CASE_EXPRESSION', 96, "Case expressions must be constant");
+ static final CompileTimeErrorCode NON_CONSTANT_CASE_EXPRESSION = new CompileTimeErrorCode.con1('NON_CONSTANT_CASE_EXPRESSION', 95, "Case expressions must be constant");
/**
* 6.2.2 Optional Formals: It is a compile-time error if the default value of an optional
* parameter is not a compile-time constant.
*/
- static final CompileTimeErrorCode NON_CONSTANT_DEFAULT_VALUE = new CompileTimeErrorCode.con1('NON_CONSTANT_DEFAULT_VALUE', 97, "Default values of an optional parameter must be constant");
+ static final CompileTimeErrorCode NON_CONSTANT_DEFAULT_VALUE = new CompileTimeErrorCode.con1('NON_CONSTANT_DEFAULT_VALUE', 96, "Default values of an optional parameter must be constant");
/**
* 12.6 Lists: It is a compile time error if an element of a constant list literal is not a
* compile-time constant.
*/
- static final CompileTimeErrorCode NON_CONSTANT_LIST_ELEMENT = new CompileTimeErrorCode.con1('NON_CONSTANT_LIST_ELEMENT', 98, "'const' lists must have all constant values");
+ static final CompileTimeErrorCode NON_CONSTANT_LIST_ELEMENT = new CompileTimeErrorCode.con1('NON_CONSTANT_LIST_ELEMENT', 97, "'const' lists must have all constant values");
/**
* 12.7 Maps: It is a compile time error if either a key or a value of an entry in a constant map
* literal is not a compile-time constant.
*/
- static final CompileTimeErrorCode NON_CONSTANT_MAP_KEY = new CompileTimeErrorCode.con1('NON_CONSTANT_MAP_KEY', 99, "The keys in a map must be constant");
+ static final CompileTimeErrorCode NON_CONSTANT_MAP_KEY = new CompileTimeErrorCode.con1('NON_CONSTANT_MAP_KEY', 98, "The keys in a map must be constant");
/**
* 12.7 Maps: It is a compile time error if either a key or a value of an entry in a constant map
* literal is not a compile-time constant.
*/
- static final CompileTimeErrorCode NON_CONSTANT_MAP_VALUE = new CompileTimeErrorCode.con1('NON_CONSTANT_MAP_VALUE', 100, "The values in a 'const' map must be constant");
+ static final CompileTimeErrorCode NON_CONSTANT_MAP_VALUE = new CompileTimeErrorCode.con1('NON_CONSTANT_MAP_VALUE', 99, "The values in a 'const' map must be constant");
/**
* 11 Metadata: Metadata consists of a series of annotations, each of which begin with the
* character @, followed by a constant expression that must be either a reference to a
* compile-time constant variable, or a call to a constant constructor.
*/
- static final CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR = new CompileTimeErrorCode.con1('NON_CONSTANT_ANNOTATION_CONSTRUCTOR', 101, "Annotation creation can use only 'const' constructor");
+ static final CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR = new CompileTimeErrorCode.con1('NON_CONSTANT_ANNOTATION_CONSTRUCTOR', 100, "Annotation creation can use only 'const' constructor");
/**
* 7.6.3 Constant Constructors: Any expression that appears within the initializer list of a
* constant constructor must be a potentially constant expression, or a compile-time error occurs.
*/
- static final CompileTimeErrorCode NON_CONSTANT_VALUE_IN_INITIALIZER = new CompileTimeErrorCode.con1('NON_CONSTANT_VALUE_IN_INITIALIZER', 102, "Initializer expressions in constant constructors must be constants");
+ static final CompileTimeErrorCode NON_CONSTANT_VALUE_IN_INITIALIZER = new CompileTimeErrorCode.con1('NON_CONSTANT_VALUE_IN_INITIALIZER', 101, "Initializer expressions in constant constructors must be constants");
/**
* 12.14.2 Binding Actuals to Formals: It is a static warning if <i>m < h</i> or if <i>m > n</i>.
@@ -1593,7 +1580,7 @@
* @param requiredCount the expected number of required arguments
* @param argumentCount the actual number of positional arguments given
*/
- static final CompileTimeErrorCode NOT_ENOUGH_REQUIRED_ARGUMENTS = new CompileTimeErrorCode.con1('NOT_ENOUGH_REQUIRED_ARGUMENTS', 103, "%d required argument(s) expected, but %d found");
+ static final CompileTimeErrorCode NOT_ENOUGH_REQUIRED_ARGUMENTS = new CompileTimeErrorCode.con1('NOT_ENOUGH_REQUIRED_ARGUMENTS', 102, "%d required argument(s) expected, but %d found");
/**
* 7.6.1 Generative Constructors: Let <i>C</i> be the class in which the superinitializer appears
@@ -1601,17 +1588,17 @@
* a compile-time error if class <i>S</i> does not declare a generative constructor named <i>S</i>
* (respectively <i>S.id</i>)
*/
- static final CompileTimeErrorCode NON_GENERATIVE_CONSTRUCTOR = new CompileTimeErrorCode.con1('NON_GENERATIVE_CONSTRUCTOR', 104, "The generative constructor '%s' expected, but factory found");
+ static final CompileTimeErrorCode NON_GENERATIVE_CONSTRUCTOR = new CompileTimeErrorCode.con1('NON_GENERATIVE_CONSTRUCTOR', 103, "The generative constructor '%s' expected, but factory found");
/**
* 7.9 Superclasses: It is a compile-time error to specify an extends clause for class Object.
*/
- static final CompileTimeErrorCode OBJECT_CANNOT_EXTEND_ANOTHER_CLASS = new CompileTimeErrorCode.con1('OBJECT_CANNOT_EXTEND_ANOTHER_CLASS', 105, "");
+ static final CompileTimeErrorCode OBJECT_CANNOT_EXTEND_ANOTHER_CLASS = new CompileTimeErrorCode.con1('OBJECT_CANNOT_EXTEND_ANOTHER_CLASS', 104, "");
/**
* 7.1.1 Operators: It is a compile-time error to declare an optional parameter in an operator.
*/
- static final CompileTimeErrorCode OPTIONAL_PARAMETER_IN_OPERATOR = new CompileTimeErrorCode.con1('OPTIONAL_PARAMETER_IN_OPERATOR', 106, "Optional parameters are not allowed when defining an operator");
+ static final CompileTimeErrorCode OPTIONAL_PARAMETER_IN_OPERATOR = new CompileTimeErrorCode.con1('OPTIONAL_PARAMETER_IN_OPERATOR', 105, "Optional parameters are not allowed when defining an operator");
/**
* 14.3 Parts: It is a compile time error if the contents of the URI are not a valid part
@@ -1619,25 +1606,25 @@
*
* @param uri the uri pointing to a non-library declaration
*/
- static final CompileTimeErrorCode PART_OF_NON_PART = new CompileTimeErrorCode.con1('PART_OF_NON_PART', 107, "The included part '%s' must have a part-of directive");
+ static final CompileTimeErrorCode PART_OF_NON_PART = new CompileTimeErrorCode.con1('PART_OF_NON_PART', 106, "The included part '%s' must have a part-of directive");
/**
* 14.1 Imports: It is a compile-time error if the current library declares a top-level member
* named <i>p</i>.
*/
- static final CompileTimeErrorCode PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER = new CompileTimeErrorCode.con1('PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER', 108, "The name '%s' is already used as an import prefix and cannot be used to name a top-level element");
+ static final CompileTimeErrorCode PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER = new CompileTimeErrorCode.con1('PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER', 107, "The name '%s' is already used as an import prefix and cannot be used to name a top-level element");
/**
* 6.2.2 Optional Formals: It is a compile-time error if the name of a named optional parameter
* begins with an '_' character.
*/
- static final CompileTimeErrorCode PRIVATE_OPTIONAL_PARAMETER = new CompileTimeErrorCode.con1('PRIVATE_OPTIONAL_PARAMETER', 109, "Named optional parameters cannot start with an underscore");
+ static final CompileTimeErrorCode PRIVATE_OPTIONAL_PARAMETER = new CompileTimeErrorCode.con1('PRIVATE_OPTIONAL_PARAMETER', 108, "Named optional parameters cannot start with an underscore");
/**
* 12.1 Constants: It is a compile-time error if the value of a compile-time constant expression
* depends on itself.
*/
- static final CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT = new CompileTimeErrorCode.con1('RECURSIVE_COMPILE_TIME_CONSTANT', 110, "");
+ static final CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT = new CompileTimeErrorCode.con1('RECURSIVE_COMPILE_TIME_CONSTANT', 109, "");
/**
* 7.6.1 Generative Constructors: A generative constructor may be redirecting, in which case its
@@ -1648,13 +1635,13 @@
*
* https://code.google.com/p/dart/issues/detail?id=954
*/
- static final CompileTimeErrorCode RECURSIVE_CONSTRUCTOR_REDIRECT = new CompileTimeErrorCode.con1('RECURSIVE_CONSTRUCTOR_REDIRECT', 111, "Cycle in redirecting generative constructors");
+ static final CompileTimeErrorCode RECURSIVE_CONSTRUCTOR_REDIRECT = new CompileTimeErrorCode.con1('RECURSIVE_CONSTRUCTOR_REDIRECT', 110, "Cycle in redirecting generative constructors");
/**
* 7.6.2 Factories: It is a compile-time error if a redirecting factory constructor redirects to
* itself, either directly or indirectly via a sequence of redirections.
*/
- static final CompileTimeErrorCode RECURSIVE_FACTORY_REDIRECT = new CompileTimeErrorCode.con1('RECURSIVE_FACTORY_REDIRECT', 112, "Cycle in redirecting factory constructors");
+ static final CompileTimeErrorCode RECURSIVE_FACTORY_REDIRECT = new CompileTimeErrorCode.con1('RECURSIVE_FACTORY_REDIRECT', 111, "Cycle in redirecting factory constructors");
/**
* 7.10 Superinterfaces: It is a compile-time error if the interface of a class <i>C</i> is a
@@ -1667,7 +1654,7 @@
* @param className the name of the class that implements itself recursively
* @param strImplementsPath a string representation of the implements loop
*/
- static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE', 113, "'%s' cannot be a superinterface of itself: %s");
+ static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE', 112, "'%s' cannot be a superinterface of itself: %s");
/**
* 7.10 Superinterfaces: It is a compile-time error if the interface of a class <i>C</i> is a
@@ -1679,7 +1666,7 @@
*
* @param className the name of the class that implements itself recursively
*/
- static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS', 114, "'%s' cannot extend itself");
+ static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS', 113, "'%s' cannot extend itself");
/**
* 7.10 Superinterfaces: It is a compile-time error if the interface of a class <i>C</i> is a
@@ -1691,31 +1678,31 @@
*
* @param className the name of the class that implements itself recursively
*/
- static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS', 115, "'%s' cannot implement itself");
+ static final CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS = new CompileTimeErrorCode.con1('RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS', 114, "'%s' cannot implement itself");
/**
* 7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with the const modifier but
* <i>k'</i> is not a constant constructor.
*/
- static final CompileTimeErrorCode REDIRECT_TO_NON_CONST_CONSTRUCTOR = new CompileTimeErrorCode.con1('REDIRECT_TO_NON_CONST_CONSTRUCTOR', 116, "Constant factory constructor cannot delegate to a non-constant constructor");
+ static final CompileTimeErrorCode REDIRECT_TO_NON_CONST_CONSTRUCTOR = new CompileTimeErrorCode.con1('REDIRECT_TO_NON_CONST_CONSTRUCTOR', 115, "Constant factory constructor cannot delegate to a non-constant constructor");
/**
* 13.3 Local Variable Declaration: It is a compile-time error if <i>e</i> refers to the name
* <i>v</i> or the name <i>v=</i>.
*/
- static final CompileTimeErrorCode REFERENCE_TO_DECLARED_VARIABLE_IN_INITIALIZER = new CompileTimeErrorCode.con1('REFERENCE_TO_DECLARED_VARIABLE_IN_INITIALIZER', 117, "The name '%s' cannot be referenced in the initializer of a variable with the same name");
+ static final CompileTimeErrorCode REFERENCE_TO_DECLARED_VARIABLE_IN_INITIALIZER = new CompileTimeErrorCode.con1('REFERENCE_TO_DECLARED_VARIABLE_IN_INITIALIZER', 116, "The name '%s' cannot be referenced in the initializer of a variable with the same name");
/**
* 12.8.1 Rethrow: It is a compile-time error if an expression of the form <i>rethrow;</i> is not
* enclosed within a on-catch clause.
*/
- static final CompileTimeErrorCode RETHROW_OUTSIDE_CATCH = new CompileTimeErrorCode.con1('RETHROW_OUTSIDE_CATCH', 118, "rethrow must be inside of a catch clause");
+ static final CompileTimeErrorCode RETHROW_OUTSIDE_CATCH = new CompileTimeErrorCode.con1('RETHROW_OUTSIDE_CATCH', 117, "rethrow must be inside of a catch clause");
/**
* 13.11 Return: It is a compile-time error if a return statement of the form <i>return e;</i>
* appears in a generative constructor.
*/
- static final CompileTimeErrorCode RETURN_IN_GENERATIVE_CONSTRUCTOR = new CompileTimeErrorCode.con1('RETURN_IN_GENERATIVE_CONSTRUCTOR', 119, "Constructors cannot return a value");
+ static final CompileTimeErrorCode RETURN_IN_GENERATIVE_CONSTRUCTOR = new CompileTimeErrorCode.con1('RETURN_IN_GENERATIVE_CONSTRUCTOR', 118, "Constructors cannot return a value");
/**
* 12.15.4 Super Invocation: A super method invocation <i>i</i> has the form
@@ -1725,19 +1712,19 @@
* initializer list, in class Object, in a factory constructor, or in a static method or variable
* initializer.
*/
- static final CompileTimeErrorCode SUPER_IN_INVALID_CONTEXT = new CompileTimeErrorCode.con1('SUPER_IN_INVALID_CONTEXT', 120, "Invalid context for 'super' invocation");
+ static final CompileTimeErrorCode SUPER_IN_INVALID_CONTEXT = new CompileTimeErrorCode.con1('SUPER_IN_INVALID_CONTEXT', 119, "Invalid context for 'super' invocation");
/**
* 7.6.1 Generative Constructors: A generative constructor may be redirecting, in which case its
* only action is to invoke another generative constructor.
*/
- static final CompileTimeErrorCode SUPER_IN_REDIRECTING_CONSTRUCTOR = new CompileTimeErrorCode.con1('SUPER_IN_REDIRECTING_CONSTRUCTOR', 121, "The redirecting constructor cannot have a 'super' initializer");
+ static final CompileTimeErrorCode SUPER_IN_REDIRECTING_CONSTRUCTOR = new CompileTimeErrorCode.con1('SUPER_IN_REDIRECTING_CONSTRUCTOR', 120, "The redirecting constructor cannot have a 'super' initializer");
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It is a compile-time
* error if a generative constructor of class Object includes a superinitializer.
*/
- static final CompileTimeErrorCode SUPER_INITIALIZER_IN_OBJECT = new CompileTimeErrorCode.con1('SUPER_INITIALIZER_IN_OBJECT', 122, "");
+ static final CompileTimeErrorCode SUPER_INITIALIZER_IN_OBJECT = new CompileTimeErrorCode.con1('SUPER_INITIALIZER_IN_OBJECT', 121, "");
/**
* 12.11 Instance Creation: It is a static type warning if any of the type arguments to a
@@ -1756,19 +1743,19 @@
* @param boundingTypeName the name of the bounding type
* @see StaticTypeWarningCode#TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
*/
- static final CompileTimeErrorCode TYPE_ARGUMENT_NOT_MATCHING_BOUNDS = new CompileTimeErrorCode.con1('TYPE_ARGUMENT_NOT_MATCHING_BOUNDS', 123, "'%s' does not extend '%s'");
+ static final CompileTimeErrorCode TYPE_ARGUMENT_NOT_MATCHING_BOUNDS = new CompileTimeErrorCode.con1('TYPE_ARGUMENT_NOT_MATCHING_BOUNDS', 122, "'%s' does not extend '%s'");
/**
* 15.3.1 Typedef: It is a compile-time error if a typedef refers to itself via a chain of
* references that does not include a class declaration.
*/
- static final CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF = new CompileTimeErrorCode.con1('TYPE_ALIAS_CANNOT_REFERENCE_ITSELF', 124, "Type alias can reference itself only via the bounds of its generic parameters");
+ static final CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF = new CompileTimeErrorCode.con1('TYPE_ALIAS_CANNOT_REFERENCE_ITSELF', 123, "Type alias can reference itself only via the bounds of its generic parameters");
/**
* 12.11.2 Const: It is a compile-time error if <i>T</i> is not a class accessible in the current
* scope, optionally followed by type arguments.
*/
- static final CompileTimeErrorCode UNDEFINED_CLASS = new CompileTimeErrorCode.con1('UNDEFINED_CLASS', 125, "Undefined class '%s'");
+ static final CompileTimeErrorCode UNDEFINED_CLASS = new CompileTimeErrorCode.con1('UNDEFINED_CLASS', 124, "Undefined class '%s'");
/**
* 7.6.1 Generative Constructors: Let <i>C</i> be the class in which the superinitializer appears
@@ -1776,7 +1763,7 @@
* a compile-time error if class <i>S</i> does not declare a generative constructor named <i>S</i>
* (respectively <i>S.id</i>)
*/
- static final CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER = new CompileTimeErrorCode.con1('UNDEFINED_CONSTRUCTOR_IN_INITIALIZER', 126, "The class '%s' does not have a generative constructor '%s'");
+ static final CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER = new CompileTimeErrorCode.con1('UNDEFINED_CONSTRUCTOR_IN_INITIALIZER', 125, "The class '%s' does not have a generative constructor '%s'");
/**
* 7.6.1 Generative Constructors: Let <i>C</i> be the class in which the superinitializer appears
@@ -1784,7 +1771,7 @@
* a compile-time error if class <i>S</i> does not declare a generative constructor named <i>S</i>
* (respectively <i>S.id</i>)
*/
- static final CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT = new CompileTimeErrorCode.con1('UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT', 127, "The class '%s' does not have a default generative constructor");
+ static final CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT = new CompileTimeErrorCode.con1('UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT', 126, "The class '%s' does not have a default generative constructor");
/**
* 12.14.3 Unqualified Invocation: If there exists a lexically visible declaration named
@@ -1794,7 +1781,7 @@
*
* @param methodName the name of the method that is undefined
*/
- static final CompileTimeErrorCode UNDEFINED_FUNCTION = new CompileTimeErrorCode.con1('UNDEFINED_FUNCTION', 128, "The function '%s' is not defined");
+ static final CompileTimeErrorCode UNDEFINED_FUNCTION = new CompileTimeErrorCode.con1('UNDEFINED_FUNCTION', 127, "The function '%s' is not defined");
/**
* 12.14.2 Binding Actuals to Formals: Furthermore, each <i>q<sub>i</sub></i>, <i>1<=i<=l</i>,
@@ -1806,7 +1793,7 @@
*
* @param name the name of the requested named parameter
*/
- static final CompileTimeErrorCode UNDEFINED_NAMED_PARAMETER = new CompileTimeErrorCode.con1('UNDEFINED_NAMED_PARAMETER', 129, "The named parameter '%s' is not defined");
+ static final CompileTimeErrorCode UNDEFINED_NAMED_PARAMETER = new CompileTimeErrorCode.con1('UNDEFINED_NAMED_PARAMETER', 128, "The named parameter '%s' is not defined");
/**
* 14.2 Exports: It is a compile-time error if the compilation unit found at the specified URI is
@@ -1821,7 +1808,7 @@
* @param uri the URI pointing to a non-existent file
* @see #INVALID_URI
*/
- static final CompileTimeErrorCode URI_DOES_NOT_EXIST = new CompileTimeErrorCode.con1('URI_DOES_NOT_EXIST', 130, "Target of URI does not exist: '%s'");
+ static final CompileTimeErrorCode URI_DOES_NOT_EXIST = new CompileTimeErrorCode.con1('URI_DOES_NOT_EXIST', 129, "Target of URI does not exist: '%s'");
/**
* 14.1 Imports: It is a compile-time error if <i>x</i> is not a compile-time constant, or if
@@ -1833,7 +1820,7 @@
* 14.5 URIs: It is a compile-time error if the string literal <i>x</i> that describes a URI is
* not a compile-time constant, or if <i>x</i> involves string interpolation.
*/
- static final CompileTimeErrorCode URI_WITH_INTERPOLATION = new CompileTimeErrorCode.con1('URI_WITH_INTERPOLATION', 131, "URIs cannot use string interpolation");
+ static final CompileTimeErrorCode URI_WITH_INTERPOLATION = new CompileTimeErrorCode.con1('URI_WITH_INTERPOLATION', 130, "URIs cannot use string interpolation");
/**
* 7.1.1 Operators: It is a compile-time error if the arity of the user-declared operator []= is
@@ -1846,7 +1833,7 @@
* @param expectedNumberOfParameters the number of parameters expected
* @param actualNumberOfParameters the number of parameters found in the operator declaration
*/
- static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR', 132, "Operator '%s' should declare exactly %d parameter(s), but %d found");
+ static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR', 131, "Operator '%s' should declare exactly %d parameter(s), but %d found");
/**
* 7.1.1 Operators: It is a compile time error if the arity of the user-declared operator - is not
@@ -1854,17 +1841,16 @@
*
* @param actualNumberOfParameters the number of parameters found in the operator declaration
*/
- static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS', 133, "Operator '-' should declare 0 or 1 parameter, but %d found");
+ static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS', 132, "Operator '-' should declare 0 or 1 parameter, but %d found");
/**
* 7.3 Setters: It is a compile-time error if a setter's formal parameter list does not include
* exactly one required formal parameter <i>p</i>.
*/
- static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER', 134, "Setters should declare exactly one required parameter");
+ static final CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER = new CompileTimeErrorCode.con1('WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER', 133, "Setters should declare exactly one required parameter");
static final List<CompileTimeErrorCode> values = [
AMBIGUOUS_EXPORT,
ARGUMENT_DEFINITION_TEST_NON_PARAMETER,
- ARGUMENT_TYPE_NOT_ASSIGNABLE,
BUILT_IN_IDENTIFIER_AS_TYPE,
BUILT_IN_IDENTIFIER_AS_TYPE_NAME,
BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME,
diff --git a/pkg/analyzer_experimental/lib/src/generated/java_core.dart b/pkg/analyzer_experimental/lib/src/generated/java_core.dart
index c136b7a..56de04e 100644
--- a/pkg/analyzer_experimental/lib/src/generated/java_core.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/java_core.dart
@@ -288,29 +288,23 @@
JavaIOException([message = "", cause = null]) : super(message, cause);
}
-class IllegalArgumentException implements Exception {
- final String message;
- const IllegalArgumentException([this.message = "", Exception e = null]);
- String toString() => "IllegalStateException: $message";
+class IllegalArgumentException extends JavaException {
+ IllegalArgumentException([message = "", cause = null]) : super(message, cause);
}
-class StringIndexOutOfBoundsException implements Exception {
- final int index;
- const StringIndexOutOfBoundsException(this.index);
- String toString() => "StringIndexOutOfBoundsException: $index";
+class StringIndexOutOfBoundsException extends JavaException {
+ StringIndexOutOfBoundsException(int index) : super('$index');
}
-class IllegalStateException implements Exception {
- final String message;
- const IllegalStateException([this.message = ""]);
- String toString() => "IllegalStateException: $message";
+class IllegalStateException extends JavaException {
+ IllegalStateException([message = ""]) : super(message);
}
-class UnsupportedOperationException implements Exception {
+class UnsupportedOperationException extends JavaException {
String toString() => "UnsupportedOperationException";
}
-class NumberFormatException implements Exception {
+class NumberFormatException extends JavaException {
String toString() => "NumberFormatException";
}
@@ -376,10 +370,6 @@
elements.sort(compare);
}
- void shuffle() {
- elements.shuffle();
- }
-
int indexOf(E element, [int start = 0]) {
return elements.indexOf(element, start);
}
diff --git a/pkg/analyzer_experimental/lib/src/generated/parser.dart b/pkg/analyzer_experimental/lib/src/generated/parser.dart
index a7cb7de..26185b6 100644
--- a/pkg/analyzer_experimental/lib/src/generated/parser.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/parser.dart
@@ -1071,7 +1071,16 @@
AssertStatement parseAssertStatement() {
Token keyword = expect(Keyword.ASSERT);
Token leftParen = expect2(TokenType.OPEN_PAREN);
- Expression expression = parseConditionalExpression();
+ Expression expression = parseExpression2();
+ if (expression is AssignmentExpression) {
+ reportError(ParserErrorCode.ASSERT_DOES_NOT_TAKE_ASSIGNMENT, expression, []);
+ } else if (expression is CascadeExpression) {
+ reportError(ParserErrorCode.ASSERT_DOES_NOT_TAKE_CASCADE, expression, []);
+ } else if (expression is ThrowExpression) {
+ reportError(ParserErrorCode.ASSERT_DOES_NOT_TAKE_THROW, expression, []);
+ } else if (expression is RethrowExpression) {
+ reportError(ParserErrorCode.ASSERT_DOES_NOT_TAKE_RETHROW, expression, []);
+ }
Token rightParen = expect2(TokenType.CLOSE_PAREN);
Token semicolon = expect2(TokenType.SEMICOLON);
return new AssertStatement.full(keyword, leftParen, expression, rightParen, semicolon);
@@ -1163,8 +1172,8 @@
*
* <pre>
* bitwiseAndExpression ::=
- * equalityExpression ('&' equalityExpression)*
- * | 'super' ('&' equalityExpression)+
+ * shiftExpression ('&' shiftExpression)*
+ * | 'super' ('&' shiftExpression)+
* </pre>
*
* @return the bitwise and expression that was parsed
@@ -1174,11 +1183,11 @@
if (matches(Keyword.SUPER) && matches4(peek(), TokenType.AMPERSAND)) {
expression = new SuperExpression.full(andAdvance);
} else {
- expression = parseEqualityExpression();
+ expression = parseShiftExpression();
}
while (matches5(TokenType.AMPERSAND)) {
Token operator = andAdvance;
- expression = new BinaryExpression.full(expression, operator, parseEqualityExpression());
+ expression = new BinaryExpression.full(expression, operator, parseShiftExpression());
}
return expression;
}
@@ -1739,7 +1748,7 @@
} else if (matches3(firstToken, Keyword.THIS) || matches3(firstToken, Keyword.NULL) || matches3(firstToken, Keyword.TRUE) || matches3(firstToken, Keyword.FALSE)) {
return null;
}
- } catch (exception) {
+ } on JavaException catch (exception) {
}
return null;
}
@@ -3242,16 +3251,16 @@
*
* <pre>
* logicalAndExpression ::=
- * bitwiseOrExpression ('&&' bitwiseOrExpression)*
+ * equalityExpression ('&&' equalityExpression)*
* </pre>
*
* @return the logical and expression that was parsed
*/
Expression parseLogicalAndExpression() {
- Expression expression = parseBitwiseOrExpression();
+ Expression expression = parseEqualityExpression();
while (matches5(TokenType.AMPERSAND_AMPERSAND)) {
Token operator = andAdvance;
- expression = new BinaryExpression.full(expression, operator, parseBitwiseOrExpression());
+ expression = new BinaryExpression.full(expression, operator, parseEqualityExpression());
}
return expression;
}
@@ -3960,8 +3969,8 @@
*
* <pre>
* relationalExpression ::=
- * shiftExpression ('is' '!'? type | 'as' type | relationalOperator shiftExpression)?
- * | 'super' relationalOperator shiftExpression
+ * bitwiseOrExpression ('is' '!'? type | 'as' type | relationalOperator bitwiseOrExpression)?
+ * | 'super' relationalOperator bitwiseOrExpression
* </pre>
*
* @return the relational expression that was parsed
@@ -3970,10 +3979,10 @@
if (matches(Keyword.SUPER) && _currentToken.next.type.isRelationalOperator) {
Expression expression = new SuperExpression.full(andAdvance);
Token operator = andAdvance;
- expression = new BinaryExpression.full(expression, operator, parseShiftExpression());
+ expression = new BinaryExpression.full(expression, operator, parseBitwiseOrExpression());
return expression;
}
- Expression expression = parseShiftExpression();
+ Expression expression = parseBitwiseOrExpression();
if (matches(Keyword.AS)) {
Token asOperator = andAdvance;
expression = new AsExpression.full(expression, asOperator, parseTypeName());
@@ -3986,7 +3995,7 @@
expression = new IsExpression.full(expression, isOperator, notOperator, parseTypeName());
} else if (_currentToken.type.isRelationalOperator) {
Token operator = andAdvance;
- expression = new BinaryExpression.full(expression, operator, parseShiftExpression());
+ expression = new BinaryExpression.full(expression, operator, parseBitwiseOrExpression());
}
return expression;
}
@@ -4334,11 +4343,11 @@
SymbolLiteral parseSymbolLiteral() {
Token poundSign = andAdvance;
List<Token> components = new List<Token>();
- if (matches5(TokenType.IDENTIFIER)) {
+ if (matchesIdentifier()) {
components.add(andAdvance);
while (matches5(TokenType.PERIOD)) {
advance();
- if (matches5(TokenType.IDENTIFIER)) {
+ if (matchesIdentifier()) {
components.add(andAdvance);
} else {
reportError8(ParserErrorCode.MISSING_IDENTIFIER, []);
@@ -5666,136 +5675,144 @@
static final ParserErrorCode ABSTRACT_TOP_LEVEL_FUNCTION = new ParserErrorCode.con3('ABSTRACT_TOP_LEVEL_FUNCTION', 2, "Top-level functions cannot be declared to be 'abstract'");
static final ParserErrorCode ABSTRACT_TOP_LEVEL_VARIABLE = new ParserErrorCode.con3('ABSTRACT_TOP_LEVEL_VARIABLE', 3, "Top-level variables cannot be declared to be 'abstract'");
static final ParserErrorCode ABSTRACT_TYPEDEF = new ParserErrorCode.con3('ABSTRACT_TYPEDEF', 4, "Type aliases cannot be declared to be 'abstract'");
- static final ParserErrorCode BREAK_OUTSIDE_OF_LOOP = new ParserErrorCode.con3('BREAK_OUTSIDE_OF_LOOP', 5, "A break statement cannot be used outside of a loop or switch statement");
- static final ParserErrorCode CONST_AND_FINAL = new ParserErrorCode.con3('CONST_AND_FINAL', 6, "Members cannot be declared to be both 'const' and 'final'");
- static final ParserErrorCode CONST_AND_VAR = new ParserErrorCode.con3('CONST_AND_VAR', 7, "Members cannot be declared to be both 'const' and 'var'");
- static final ParserErrorCode CONST_CLASS = new ParserErrorCode.con3('CONST_CLASS', 8, "Classes cannot be declared to be 'const'");
- static final ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = new ParserErrorCode.con3('CONST_CONSTRUCTOR_WITH_BODY', 9, "'const' constructors cannot have a body");
- static final ParserErrorCode CONST_FACTORY = new ParserErrorCode.con3('CONST_FACTORY', 10, "Only redirecting factory constructors can be declared to be 'const'");
- static final ParserErrorCode CONST_METHOD = new ParserErrorCode.con3('CONST_METHOD', 11, "Getters, setters and methods cannot be declared to be 'const'");
- static final ParserErrorCode CONST_TYPEDEF = new ParserErrorCode.con3('CONST_TYPEDEF', 12, "Type aliases cannot be declared to be 'const'");
- static final ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE = new ParserErrorCode.con3('CONSTRUCTOR_WITH_RETURN_TYPE', 13, "Constructors cannot have a return type");
- static final ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP = new ParserErrorCode.con3('CONTINUE_OUTSIDE_OF_LOOP', 14, "A continue statement cannot be used outside of a loop or switch statement");
- static final ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE = new ParserErrorCode.con3('CONTINUE_WITHOUT_LABEL_IN_CASE', 15, "A continue statement in a switch statement must have a label as a target");
- static final ParserErrorCode DEPRECATED_ARGUMENT_DEFINITION_TEST = new ParserErrorCode.con3('DEPRECATED_ARGUMENT_DEFINITION_TEST', 16, "The argument definition test ('?' operator) has been deprecated");
- static final ParserErrorCode DIRECTIVE_AFTER_DECLARATION = new ParserErrorCode.con3('DIRECTIVE_AFTER_DECLARATION', 17, "Directives must appear before any declarations");
- static final ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT = new ParserErrorCode.con3('DUPLICATE_LABEL_IN_SWITCH_STATEMENT', 18, "The label %s was already used in this switch statement");
- static final ParserErrorCode DUPLICATED_MODIFIER = new ParserErrorCode.con3('DUPLICATED_MODIFIER', 19, "The modifier '%s' was already specified.");
- static final ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND = new ParserErrorCode.con3('EQUALITY_CANNOT_BE_EQUALITY_OPERAND', 20, "Equality expression cannot be operand of another equality expression.");
- static final ParserErrorCode EXPECTED_CASE_OR_DEFAULT = new ParserErrorCode.con3('EXPECTED_CASE_OR_DEFAULT', 21, "Expected 'case' or 'default'");
- static final ParserErrorCode EXPECTED_CLASS_MEMBER = new ParserErrorCode.con3('EXPECTED_CLASS_MEMBER', 22, "Expected a class member");
- static final ParserErrorCode EXPECTED_EXECUTABLE = new ParserErrorCode.con3('EXPECTED_EXECUTABLE', 23, "Expected a method, getter, setter or operator declaration");
- static final ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = new ParserErrorCode.con3('EXPECTED_LIST_OR_MAP_LITERAL', 24, "Expected a list or map literal");
- static final ParserErrorCode EXPECTED_STRING_LITERAL = new ParserErrorCode.con3('EXPECTED_STRING_LITERAL', 25, "Expected a string literal");
- static final ParserErrorCode EXPECTED_TOKEN = new ParserErrorCode.con3('EXPECTED_TOKEN', 26, "Expected to find '%s'");
- static final ParserErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS = new ParserErrorCode.con3('EXPECTED_ONE_LIST_TYPE_ARGUMENTS', 27, "List literal requires exactly one type arguments or none, but %d found");
- static final ParserErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS = new ParserErrorCode.con3('EXPECTED_TWO_MAP_TYPE_ARGUMENTS', 28, "Map literal requires exactly two type arguments or none, but %d found");
- static final ParserErrorCode EXPECTED_TYPE_NAME = new ParserErrorCode.con3('EXPECTED_TYPE_NAME', 29, "Expected a type name");
- static final ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new ParserErrorCode.con3('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 30, "Export directives must preceed part directives");
- static final ParserErrorCode EXTERNAL_AFTER_CONST = new ParserErrorCode.con3('EXTERNAL_AFTER_CONST', 31, "The modifier 'external' should be before the modifier 'const'");
- static final ParserErrorCode EXTERNAL_AFTER_FACTORY = new ParserErrorCode.con3('EXTERNAL_AFTER_FACTORY', 32, "The modifier 'external' should be before the modifier 'factory'");
- static final ParserErrorCode EXTERNAL_AFTER_STATIC = new ParserErrorCode.con3('EXTERNAL_AFTER_STATIC', 33, "The modifier 'external' should be before the modifier 'static'");
- static final ParserErrorCode EXTERNAL_CLASS = new ParserErrorCode.con3('EXTERNAL_CLASS', 34, "Classes cannot be declared to be 'external'");
- static final ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_CONSTRUCTOR_WITH_BODY', 35, "External constructors cannot have a body");
- static final ParserErrorCode EXTERNAL_FIELD = new ParserErrorCode.con3('EXTERNAL_FIELD', 36, "Fields cannot be declared to be 'external'");
- static final ParserErrorCode EXTERNAL_GETTER_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_GETTER_WITH_BODY', 37, "External getters cannot have a body");
- static final ParserErrorCode EXTERNAL_METHOD_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_METHOD_WITH_BODY', 38, "External methods cannot have a body");
- static final ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_OPERATOR_WITH_BODY', 39, "External operators cannot have a body");
- static final ParserErrorCode EXTERNAL_SETTER_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_SETTER_WITH_BODY', 40, "External setters cannot have a body");
- static final ParserErrorCode EXTERNAL_TYPEDEF = new ParserErrorCode.con3('EXTERNAL_TYPEDEF', 41, "Type aliases cannot be declared to be 'external'");
- static final ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION = new ParserErrorCode.con3('FACTORY_TOP_LEVEL_DECLARATION', 42, "Top-level declarations cannot be declared to be 'factory'");
- static final ParserErrorCode FACTORY_WITHOUT_BODY = new ParserErrorCode.con3('FACTORY_WITHOUT_BODY', 43, "A non-redirecting 'factory' constructor must have a body");
- static final ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new ParserErrorCode.con3('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 44, "Field initializers can only be used in a constructor");
- static final ParserErrorCode FINAL_AND_VAR = new ParserErrorCode.con3('FINAL_AND_VAR', 45, "Members cannot be declared to be both 'final' and 'var'");
- static final ParserErrorCode FINAL_CLASS = new ParserErrorCode.con3('FINAL_CLASS', 46, "Classes cannot be declared to be 'final'");
- static final ParserErrorCode FINAL_CONSTRUCTOR = new ParserErrorCode.con3('FINAL_CONSTRUCTOR', 47, "A constructor cannot be declared to be 'final'");
- static final ParserErrorCode FINAL_METHOD = new ParserErrorCode.con3('FINAL_METHOD', 48, "Getters, setters and methods cannot be declared to be 'final'");
- static final ParserErrorCode FINAL_TYPEDEF = new ParserErrorCode.con3('FINAL_TYPEDEF', 49, "Type aliases cannot be declared to be 'final'");
- static final ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = new ParserErrorCode.con3('FUNCTION_TYPED_PARAMETER_VAR', 50, "Function typed parameters cannot specify 'const', 'final' or 'var' instead of return type");
- static final ParserErrorCode GETTER_IN_FUNCTION = new ParserErrorCode.con3('GETTER_IN_FUNCTION', 51, "Getters cannot be defined within methods or functions");
- static final ParserErrorCode GETTER_WITH_PARAMETERS = new ParserErrorCode.con3('GETTER_WITH_PARAMETERS', 52, "Getter should be declared without a parameter list");
- static final ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE = new ParserErrorCode.con3('ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE', 53, "Illegal assignment to non-assignable expression");
- static final ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS = new ParserErrorCode.con3('IMPLEMENTS_BEFORE_EXTENDS', 54, "The extends clause must be before the implements clause");
- static final ParserErrorCode IMPLEMENTS_BEFORE_WITH = new ParserErrorCode.con3('IMPLEMENTS_BEFORE_WITH', 55, "The with clause must be before the implements clause");
- static final ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new ParserErrorCode.con3('IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 56, "Import directives must preceed part directives");
- static final ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH = new ParserErrorCode.con3('INITIALIZED_VARIABLE_IN_FOR_EACH', 57, "The loop variable in a for-each loop cannot be initialized");
- static final ParserErrorCode INVALID_CODE_POINT = new ParserErrorCode.con3('INVALID_CODE_POINT', 58, "The escape sequence '%s' is not a valid code point");
- static final ParserErrorCode INVALID_COMMENT_REFERENCE = new ParserErrorCode.con3('INVALID_COMMENT_REFERENCE', 59, "Comment references should contain a possibly prefixed identifier and can start with 'new', but should not contain anything else");
- static final ParserErrorCode INVALID_HEX_ESCAPE = new ParserErrorCode.con3('INVALID_HEX_ESCAPE', 60, "An escape sequence starting with '\\x' must be followed by 2 hexidecimal digits");
- static final ParserErrorCode INVALID_OPERATOR = new ParserErrorCode.con3('INVALID_OPERATOR', 61, "The string '%s' is not a valid operator");
- static final ParserErrorCode INVALID_OPERATOR_FOR_SUPER = new ParserErrorCode.con3('INVALID_OPERATOR_FOR_SUPER', 62, "The operator '%s' cannot be used with 'super'");
- static final ParserErrorCode INVALID_UNICODE_ESCAPE = new ParserErrorCode.con3('INVALID_UNICODE_ESCAPE', 63, "An escape sequence starting with '\\u' must be followed by 4 hexidecimal digits or from 1 to 6 digits between '{' and '}'");
- static final ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST = new ParserErrorCode.con3('LIBRARY_DIRECTIVE_NOT_FIRST', 64, "The library directive must appear before all other directives");
- static final ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER = new ParserErrorCode.con3('LOCAL_FUNCTION_DECLARATION_MODIFIER', 65, "Local function declarations cannot specify any modifier");
- static final ParserErrorCode MISSING_ASSIGNABLE_SELECTOR = new ParserErrorCode.con3('MISSING_ASSIGNABLE_SELECTOR', 66, "Missing selector such as \".<identifier>\" or \"[0]\"");
- static final ParserErrorCode MISSING_CATCH_OR_FINALLY = new ParserErrorCode.con3('MISSING_CATCH_OR_FINALLY', 67, "A try statement must have either a catch or finally clause");
- static final ParserErrorCode MISSING_CLASS_BODY = new ParserErrorCode.con3('MISSING_CLASS_BODY', 68, "A class definition must have a body, even if it is empty");
- static final ParserErrorCode MISSING_CLOSING_PARENTHESIS = new ParserErrorCode.con3('MISSING_CLOSING_PARENTHESIS', 69, "The closing parenthesis is missing");
- static final ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE = new ParserErrorCode.con3('MISSING_CONST_FINAL_VAR_OR_TYPE', 70, "Variables must be declared using the keywords 'const', 'final', 'var' or a type name");
- static final ParserErrorCode MISSING_EXPRESSION_IN_THROW = new ParserErrorCode.con3('MISSING_EXPRESSION_IN_THROW', 71, "Throw expressions must compute the object to be thrown");
- static final ParserErrorCode MISSING_FUNCTION_BODY = new ParserErrorCode.con3('MISSING_FUNCTION_BODY', 72, "A function body must be provided");
- static final ParserErrorCode MISSING_FUNCTION_PARAMETERS = new ParserErrorCode.con3('MISSING_FUNCTION_PARAMETERS', 73, "Functions must have an explicit list of parameters");
- static final ParserErrorCode MISSING_IDENTIFIER = new ParserErrorCode.con3('MISSING_IDENTIFIER', 74, "Expected an identifier");
- static final ParserErrorCode MISSING_KEYWORD_OPERATOR = new ParserErrorCode.con3('MISSING_KEYWORD_OPERATOR', 75, "Operator declarations must be preceeded by the keyword 'operator'");
- static final ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE = new ParserErrorCode.con3('MISSING_NAME_IN_LIBRARY_DIRECTIVE', 76, "Library directives must include a library name");
- static final ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE = new ParserErrorCode.con3('MISSING_NAME_IN_PART_OF_DIRECTIVE', 77, "Library directives must include a library name");
- static final ParserErrorCode MISSING_STATEMENT = new ParserErrorCode.con3('MISSING_STATEMENT', 78, "Expected a statement");
- static final ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('MISSING_TERMINATOR_FOR_PARAMETER_GROUP', 79, "There is no '%s' to close the parameter group");
- static final ParserErrorCode MISSING_TYPEDEF_PARAMETERS = new ParserErrorCode.con3('MISSING_TYPEDEF_PARAMETERS', 80, "Type aliases for functions must have an explicit list of parameters");
- static final ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = new ParserErrorCode.con3('MISSING_VARIABLE_IN_FOR_EACH', 81, "A loop variable must be declared in a for-each loop before the 'in', but none were found");
- static final ParserErrorCode MIXED_PARAMETER_GROUPS = new ParserErrorCode.con3('MIXED_PARAMETER_GROUPS', 82, "Cannot have both positional and named parameters in a single parameter list");
- static final ParserErrorCode MULTIPLE_EXTENDS_CLAUSES = new ParserErrorCode.con3('MULTIPLE_EXTENDS_CLAUSES', 83, "Each class definition can have at most one extends clause");
- static final ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = new ParserErrorCode.con3('MULTIPLE_IMPLEMENTS_CLAUSES', 84, "Each class definition can have at most one implements clause");
- static final ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES = new ParserErrorCode.con3('MULTIPLE_LIBRARY_DIRECTIVES', 85, "Only one library directive may be declared in a file");
- static final ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS = new ParserErrorCode.con3('MULTIPLE_NAMED_PARAMETER_GROUPS', 86, "Cannot have multiple groups of named parameters in a single parameter list");
- static final ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES = new ParserErrorCode.con3('MULTIPLE_PART_OF_DIRECTIVES', 87, "Only one part-of directive may be declared in a file");
- static final ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS = new ParserErrorCode.con3('MULTIPLE_POSITIONAL_PARAMETER_GROUPS', 88, "Cannot have multiple groups of positional parameters in a single parameter list");
- static final ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = new ParserErrorCode.con3('MULTIPLE_VARIABLES_IN_FOR_EACH', 89, "A single loop variable must be declared in a for-each loop before the 'in', but %s were found");
- static final ParserErrorCode MULTIPLE_WITH_CLAUSES = new ParserErrorCode.con3('MULTIPLE_WITH_CLAUSES', 90, "Each class definition can have at most one with clause");
- static final ParserErrorCode NAMED_FUNCTION_EXPRESSION = new ParserErrorCode.con3('NAMED_FUNCTION_EXPRESSION', 91, "Function expressions cannot be named");
- static final ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = new ParserErrorCode.con3('NAMED_PARAMETER_OUTSIDE_GROUP', 92, "Named parameters must be enclosed in curly braces ('{' and '}')");
- static final ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = new ParserErrorCode.con3('NATIVE_CLAUSE_IN_NON_SDK_CODE', 93, "Native clause can only be used in the SDK and code that is loaded through native extensions");
- static final ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE = new ParserErrorCode.con3('NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE', 94, "Native functions can only be declared in the SDK and code that is loaded through native extensions");
- static final ParserErrorCode NON_CONSTRUCTOR_FACTORY = new ParserErrorCode.con3('NON_CONSTRUCTOR_FACTORY', 95, "Only constructors can be declared to be a 'factory'");
- static final ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = new ParserErrorCode.con3('NON_IDENTIFIER_LIBRARY_NAME', 96, "The name of a library must be an identifier");
- static final ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = new ParserErrorCode.con3('NON_PART_OF_DIRECTIVE_IN_PART', 97, "The part-of directive must be the only directive in a part");
- static final ParserErrorCode NON_USER_DEFINABLE_OPERATOR = new ParserErrorCode.con3('NON_USER_DEFINABLE_OPERATOR', 98, "The operator '%s' is not user definable");
- static final ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = new ParserErrorCode.con3('NORMAL_BEFORE_OPTIONAL_PARAMETERS', 99, "Normal parameters must occur before optional parameters");
- static final ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT = new ParserErrorCode.con3('POSITIONAL_AFTER_NAMED_ARGUMENT', 100, "Positional arguments must occur before named arguments");
- static final ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP = new ParserErrorCode.con3('POSITIONAL_PARAMETER_OUTSIDE_GROUP', 101, "Positional parameters must be enclosed in square brackets ('[' and ']')");
- static final ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR = new ParserErrorCode.con3('REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR', 102, "Only factory constructor can specify '=' redirection.");
- static final ParserErrorCode SETTER_IN_FUNCTION = new ParserErrorCode.con3('SETTER_IN_FUNCTION', 103, "Setters cannot be defined within methods or functions");
- static final ParserErrorCode STATIC_AFTER_CONST = new ParserErrorCode.con3('STATIC_AFTER_CONST', 104, "The modifier 'static' should be before the modifier 'const'");
- static final ParserErrorCode STATIC_AFTER_FINAL = new ParserErrorCode.con3('STATIC_AFTER_FINAL', 105, "The modifier 'static' should be before the modifier 'final'");
- static final ParserErrorCode STATIC_AFTER_VAR = new ParserErrorCode.con3('STATIC_AFTER_VAR', 106, "The modifier 'static' should be before the modifier 'var'");
- static final ParserErrorCode STATIC_CONSTRUCTOR = new ParserErrorCode.con3('STATIC_CONSTRUCTOR', 107, "Constructors cannot be static");
- static final ParserErrorCode STATIC_GETTER_WITHOUT_BODY = new ParserErrorCode.con3('STATIC_GETTER_WITHOUT_BODY', 108, "A 'static' getter must have a body");
- static final ParserErrorCode STATIC_OPERATOR = new ParserErrorCode.con3('STATIC_OPERATOR', 109, "Operators cannot be static");
- static final ParserErrorCode STATIC_SETTER_WITHOUT_BODY = new ParserErrorCode.con3('STATIC_SETTER_WITHOUT_BODY', 110, "A 'static' setter must have a body");
- static final ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = new ParserErrorCode.con3('STATIC_TOP_LEVEL_DECLARATION', 111, "Top-level declarations cannot be declared to be 'static'");
- static final ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE = new ParserErrorCode.con3('SWITCH_HAS_CASE_AFTER_DEFAULT_CASE', 112, "The 'default' case should be the last case in a switch statement");
- static final ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES = new ParserErrorCode.con3('SWITCH_HAS_MULTIPLE_DEFAULT_CASES', 113, "The 'default' case can only be declared once");
- static final ParserErrorCode TOP_LEVEL_OPERATOR = new ParserErrorCode.con3('TOP_LEVEL_OPERATOR', 114, "Operators must be declared within a class");
- static final ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP', 115, "There is no '%s' to open a parameter group");
- static final ParserErrorCode UNEXPECTED_TOKEN = new ParserErrorCode.con3('UNEXPECTED_TOKEN', 116, "Unexpected token '%s'");
- static final ParserErrorCode WITH_BEFORE_EXTENDS = new ParserErrorCode.con3('WITH_BEFORE_EXTENDS', 117, "The extends clause must be before the with clause");
- static final ParserErrorCode WITH_WITHOUT_EXTENDS = new ParserErrorCode.con3('WITH_WITHOUT_EXTENDS', 118, "The with clause cannot be used without an extends clause");
- static final ParserErrorCode WRONG_SEPARATOR_FOR_NAMED_PARAMETER = new ParserErrorCode.con3('WRONG_SEPARATOR_FOR_NAMED_PARAMETER', 119, "The default value of a named parameter should be preceeded by ':'");
- static final ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER = new ParserErrorCode.con3('WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER', 120, "The default value of a positional parameter should be preceeded by '='");
- static final ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('WRONG_TERMINATOR_FOR_PARAMETER_GROUP', 121, "Expected '%s' to close parameter group");
- static final ParserErrorCode VAR_AND_TYPE = new ParserErrorCode.con3('VAR_AND_TYPE', 122, "Variables cannot be declared using both 'var' and a type name; remove the 'var'");
- static final ParserErrorCode VAR_AS_TYPE_NAME = new ParserErrorCode.con3('VAR_AS_TYPE_NAME', 123, "The keyword 'var' cannot be used as a type name");
- static final ParserErrorCode VAR_CLASS = new ParserErrorCode.con3('VAR_CLASS', 124, "Classes cannot be declared to be 'var'");
- static final ParserErrorCode VAR_RETURN_TYPE = new ParserErrorCode.con3('VAR_RETURN_TYPE', 125, "The return type cannot be 'var'");
- static final ParserErrorCode VAR_TYPEDEF = new ParserErrorCode.con3('VAR_TYPEDEF', 126, "Type aliases cannot be declared to be 'var'");
- static final ParserErrorCode VOID_PARAMETER = new ParserErrorCode.con3('VOID_PARAMETER', 127, "Parameters cannot have a type of 'void'");
- static final ParserErrorCode VOID_VARIABLE = new ParserErrorCode.con3('VOID_VARIABLE', 128, "Variables cannot have a type of 'void'");
+ static final ParserErrorCode ASSERT_DOES_NOT_TAKE_ASSIGNMENT = new ParserErrorCode.con3('ASSERT_DOES_NOT_TAKE_ASSIGNMENT', 5, "Assert cannot be called on an assignment");
+ static final ParserErrorCode ASSERT_DOES_NOT_TAKE_CASCADE = new ParserErrorCode.con3('ASSERT_DOES_NOT_TAKE_CASCADE', 6, "Assert cannot be called on cascade");
+ static final ParserErrorCode ASSERT_DOES_NOT_TAKE_THROW = new ParserErrorCode.con3('ASSERT_DOES_NOT_TAKE_THROW', 7, "Assert cannot be called on throws");
+ static final ParserErrorCode ASSERT_DOES_NOT_TAKE_RETHROW = new ParserErrorCode.con3('ASSERT_DOES_NOT_TAKE_RETHROW', 8, "Assert cannot be called on rethrows");
+ static final ParserErrorCode BREAK_OUTSIDE_OF_LOOP = new ParserErrorCode.con3('BREAK_OUTSIDE_OF_LOOP', 9, "A break statement cannot be used outside of a loop or switch statement");
+ static final ParserErrorCode CONST_AND_FINAL = new ParserErrorCode.con3('CONST_AND_FINAL', 10, "Members cannot be declared to be both 'const' and 'final'");
+ static final ParserErrorCode CONST_AND_VAR = new ParserErrorCode.con3('CONST_AND_VAR', 11, "Members cannot be declared to be both 'const' and 'var'");
+ static final ParserErrorCode CONST_CLASS = new ParserErrorCode.con3('CONST_CLASS', 12, "Classes cannot be declared to be 'const'");
+ static final ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = new ParserErrorCode.con3('CONST_CONSTRUCTOR_WITH_BODY', 13, "'const' constructors cannot have a body");
+ static final ParserErrorCode CONST_FACTORY = new ParserErrorCode.con3('CONST_FACTORY', 14, "Only redirecting factory constructors can be declared to be 'const'");
+ static final ParserErrorCode CONST_METHOD = new ParserErrorCode.con3('CONST_METHOD', 15, "Getters, setters and methods cannot be declared to be 'const'");
+ static final ParserErrorCode CONST_TYPEDEF = new ParserErrorCode.con3('CONST_TYPEDEF', 16, "Type aliases cannot be declared to be 'const'");
+ static final ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE = new ParserErrorCode.con3('CONSTRUCTOR_WITH_RETURN_TYPE', 17, "Constructors cannot have a return type");
+ static final ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP = new ParserErrorCode.con3('CONTINUE_OUTSIDE_OF_LOOP', 18, "A continue statement cannot be used outside of a loop or switch statement");
+ static final ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE = new ParserErrorCode.con3('CONTINUE_WITHOUT_LABEL_IN_CASE', 19, "A continue statement in a switch statement must have a label as a target");
+ static final ParserErrorCode DEPRECATED_ARGUMENT_DEFINITION_TEST = new ParserErrorCode.con3('DEPRECATED_ARGUMENT_DEFINITION_TEST', 20, "The argument definition test ('?' operator) has been deprecated");
+ static final ParserErrorCode DIRECTIVE_AFTER_DECLARATION = new ParserErrorCode.con3('DIRECTIVE_AFTER_DECLARATION', 21, "Directives must appear before any declarations");
+ static final ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT = new ParserErrorCode.con3('DUPLICATE_LABEL_IN_SWITCH_STATEMENT', 22, "The label %s was already used in this switch statement");
+ static final ParserErrorCode DUPLICATED_MODIFIER = new ParserErrorCode.con3('DUPLICATED_MODIFIER', 23, "The modifier '%s' was already specified.");
+ static final ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND = new ParserErrorCode.con3('EQUALITY_CANNOT_BE_EQUALITY_OPERAND', 24, "Equality expression cannot be operand of another equality expression.");
+ static final ParserErrorCode EXPECTED_CASE_OR_DEFAULT = new ParserErrorCode.con3('EXPECTED_CASE_OR_DEFAULT', 25, "Expected 'case' or 'default'");
+ static final ParserErrorCode EXPECTED_CLASS_MEMBER = new ParserErrorCode.con3('EXPECTED_CLASS_MEMBER', 26, "Expected a class member");
+ static final ParserErrorCode EXPECTED_EXECUTABLE = new ParserErrorCode.con3('EXPECTED_EXECUTABLE', 27, "Expected a method, getter, setter or operator declaration");
+ static final ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = new ParserErrorCode.con3('EXPECTED_LIST_OR_MAP_LITERAL', 28, "Expected a list or map literal");
+ static final ParserErrorCode EXPECTED_STRING_LITERAL = new ParserErrorCode.con3('EXPECTED_STRING_LITERAL', 29, "Expected a string literal");
+ static final ParserErrorCode EXPECTED_TOKEN = new ParserErrorCode.con3('EXPECTED_TOKEN', 30, "Expected to find '%s'");
+ static final ParserErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS = new ParserErrorCode.con3('EXPECTED_ONE_LIST_TYPE_ARGUMENTS', 31, "List literal requires exactly one type arguments or none, but %d found");
+ static final ParserErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS = new ParserErrorCode.con3('EXPECTED_TWO_MAP_TYPE_ARGUMENTS', 32, "Map literal requires exactly two type arguments or none, but %d found");
+ static final ParserErrorCode EXPECTED_TYPE_NAME = new ParserErrorCode.con3('EXPECTED_TYPE_NAME', 33, "Expected a type name");
+ static final ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new ParserErrorCode.con3('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 34, "Export directives must preceed part directives");
+ static final ParserErrorCode EXTERNAL_AFTER_CONST = new ParserErrorCode.con3('EXTERNAL_AFTER_CONST', 35, "The modifier 'external' should be before the modifier 'const'");
+ static final ParserErrorCode EXTERNAL_AFTER_FACTORY = new ParserErrorCode.con3('EXTERNAL_AFTER_FACTORY', 36, "The modifier 'external' should be before the modifier 'factory'");
+ static final ParserErrorCode EXTERNAL_AFTER_STATIC = new ParserErrorCode.con3('EXTERNAL_AFTER_STATIC', 37, "The modifier 'external' should be before the modifier 'static'");
+ static final ParserErrorCode EXTERNAL_CLASS = new ParserErrorCode.con3('EXTERNAL_CLASS', 38, "Classes cannot be declared to be 'external'");
+ static final ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_CONSTRUCTOR_WITH_BODY', 39, "External constructors cannot have a body");
+ static final ParserErrorCode EXTERNAL_FIELD = new ParserErrorCode.con3('EXTERNAL_FIELD', 40, "Fields cannot be declared to be 'external'");
+ static final ParserErrorCode EXTERNAL_GETTER_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_GETTER_WITH_BODY', 41, "External getters cannot have a body");
+ static final ParserErrorCode EXTERNAL_METHOD_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_METHOD_WITH_BODY', 42, "External methods cannot have a body");
+ static final ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_OPERATOR_WITH_BODY', 43, "External operators cannot have a body");
+ static final ParserErrorCode EXTERNAL_SETTER_WITH_BODY = new ParserErrorCode.con3('EXTERNAL_SETTER_WITH_BODY', 44, "External setters cannot have a body");
+ static final ParserErrorCode EXTERNAL_TYPEDEF = new ParserErrorCode.con3('EXTERNAL_TYPEDEF', 45, "Type aliases cannot be declared to be 'external'");
+ static final ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION = new ParserErrorCode.con3('FACTORY_TOP_LEVEL_DECLARATION', 46, "Top-level declarations cannot be declared to be 'factory'");
+ static final ParserErrorCode FACTORY_WITHOUT_BODY = new ParserErrorCode.con3('FACTORY_WITHOUT_BODY', 47, "A non-redirecting 'factory' constructor must have a body");
+ static final ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new ParserErrorCode.con3('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 48, "Field initializers can only be used in a constructor");
+ static final ParserErrorCode FINAL_AND_VAR = new ParserErrorCode.con3('FINAL_AND_VAR', 49, "Members cannot be declared to be both 'final' and 'var'");
+ static final ParserErrorCode FINAL_CLASS = new ParserErrorCode.con3('FINAL_CLASS', 50, "Classes cannot be declared to be 'final'");
+ static final ParserErrorCode FINAL_CONSTRUCTOR = new ParserErrorCode.con3('FINAL_CONSTRUCTOR', 51, "A constructor cannot be declared to be 'final'");
+ static final ParserErrorCode FINAL_METHOD = new ParserErrorCode.con3('FINAL_METHOD', 52, "Getters, setters and methods cannot be declared to be 'final'");
+ static final ParserErrorCode FINAL_TYPEDEF = new ParserErrorCode.con3('FINAL_TYPEDEF', 53, "Type aliases cannot be declared to be 'final'");
+ static final ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = new ParserErrorCode.con3('FUNCTION_TYPED_PARAMETER_VAR', 54, "Function typed parameters cannot specify 'const', 'final' or 'var' instead of return type");
+ static final ParserErrorCode GETTER_IN_FUNCTION = new ParserErrorCode.con3('GETTER_IN_FUNCTION', 55, "Getters cannot be defined within methods or functions");
+ static final ParserErrorCode GETTER_WITH_PARAMETERS = new ParserErrorCode.con3('GETTER_WITH_PARAMETERS', 56, "Getter should be declared without a parameter list");
+ static final ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE = new ParserErrorCode.con3('ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE', 57, "Illegal assignment to non-assignable expression");
+ static final ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS = new ParserErrorCode.con3('IMPLEMENTS_BEFORE_EXTENDS', 58, "The extends clause must be before the implements clause");
+ static final ParserErrorCode IMPLEMENTS_BEFORE_WITH = new ParserErrorCode.con3('IMPLEMENTS_BEFORE_WITH', 59, "The with clause must be before the implements clause");
+ static final ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new ParserErrorCode.con3('IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 60, "Import directives must preceed part directives");
+ static final ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH = new ParserErrorCode.con3('INITIALIZED_VARIABLE_IN_FOR_EACH', 61, "The loop variable in a for-each loop cannot be initialized");
+ static final ParserErrorCode INVALID_CODE_POINT = new ParserErrorCode.con3('INVALID_CODE_POINT', 62, "The escape sequence '%s' is not a valid code point");
+ static final ParserErrorCode INVALID_COMMENT_REFERENCE = new ParserErrorCode.con3('INVALID_COMMENT_REFERENCE', 63, "Comment references should contain a possibly prefixed identifier and can start with 'new', but should not contain anything else");
+ static final ParserErrorCode INVALID_HEX_ESCAPE = new ParserErrorCode.con3('INVALID_HEX_ESCAPE', 64, "An escape sequence starting with '\\x' must be followed by 2 hexidecimal digits");
+ static final ParserErrorCode INVALID_OPERATOR = new ParserErrorCode.con3('INVALID_OPERATOR', 65, "The string '%s' is not a valid operator");
+ static final ParserErrorCode INVALID_OPERATOR_FOR_SUPER = new ParserErrorCode.con3('INVALID_OPERATOR_FOR_SUPER', 66, "The operator '%s' cannot be used with 'super'");
+ static final ParserErrorCode INVALID_UNICODE_ESCAPE = new ParserErrorCode.con3('INVALID_UNICODE_ESCAPE', 67, "An escape sequence starting with '\\u' must be followed by 4 hexidecimal digits or from 1 to 6 digits between '{' and '}'");
+ static final ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST = new ParserErrorCode.con3('LIBRARY_DIRECTIVE_NOT_FIRST', 68, "The library directive must appear before all other directives");
+ static final ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER = new ParserErrorCode.con3('LOCAL_FUNCTION_DECLARATION_MODIFIER', 69, "Local function declarations cannot specify any modifier");
+ static final ParserErrorCode MISSING_ASSIGNABLE_SELECTOR = new ParserErrorCode.con3('MISSING_ASSIGNABLE_SELECTOR', 70, "Missing selector such as \".<identifier>\" or \"[0]\"");
+ static final ParserErrorCode MISSING_CATCH_OR_FINALLY = new ParserErrorCode.con3('MISSING_CATCH_OR_FINALLY', 71, "A try statement must have either a catch or finally clause");
+ static final ParserErrorCode MISSING_CLASS_BODY = new ParserErrorCode.con3('MISSING_CLASS_BODY', 72, "A class definition must have a body, even if it is empty");
+ static final ParserErrorCode MISSING_CLOSING_PARENTHESIS = new ParserErrorCode.con3('MISSING_CLOSING_PARENTHESIS', 73, "The closing parenthesis is missing");
+ static final ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE = new ParserErrorCode.con3('MISSING_CONST_FINAL_VAR_OR_TYPE', 74, "Variables must be declared using the keywords 'const', 'final', 'var' or a type name");
+ static final ParserErrorCode MISSING_EXPRESSION_IN_THROW = new ParserErrorCode.con3('MISSING_EXPRESSION_IN_THROW', 75, "Throw expressions must compute the object to be thrown");
+ static final ParserErrorCode MISSING_FUNCTION_BODY = new ParserErrorCode.con3('MISSING_FUNCTION_BODY', 76, "A function body must be provided");
+ static final ParserErrorCode MISSING_FUNCTION_PARAMETERS = new ParserErrorCode.con3('MISSING_FUNCTION_PARAMETERS', 77, "Functions must have an explicit list of parameters");
+ static final ParserErrorCode MISSING_IDENTIFIER = new ParserErrorCode.con3('MISSING_IDENTIFIER', 78, "Expected an identifier");
+ static final ParserErrorCode MISSING_KEYWORD_OPERATOR = new ParserErrorCode.con3('MISSING_KEYWORD_OPERATOR', 79, "Operator declarations must be preceeded by the keyword 'operator'");
+ static final ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE = new ParserErrorCode.con3('MISSING_NAME_IN_LIBRARY_DIRECTIVE', 80, "Library directives must include a library name");
+ static final ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE = new ParserErrorCode.con3('MISSING_NAME_IN_PART_OF_DIRECTIVE', 81, "Library directives must include a library name");
+ static final ParserErrorCode MISSING_STATEMENT = new ParserErrorCode.con3('MISSING_STATEMENT', 82, "Expected a statement");
+ static final ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('MISSING_TERMINATOR_FOR_PARAMETER_GROUP', 83, "There is no '%s' to close the parameter group");
+ static final ParserErrorCode MISSING_TYPEDEF_PARAMETERS = new ParserErrorCode.con3('MISSING_TYPEDEF_PARAMETERS', 84, "Type aliases for functions must have an explicit list of parameters");
+ static final ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = new ParserErrorCode.con3('MISSING_VARIABLE_IN_FOR_EACH', 85, "A loop variable must be declared in a for-each loop before the 'in', but none were found");
+ static final ParserErrorCode MIXED_PARAMETER_GROUPS = new ParserErrorCode.con3('MIXED_PARAMETER_GROUPS', 86, "Cannot have both positional and named parameters in a single parameter list");
+ static final ParserErrorCode MULTIPLE_EXTENDS_CLAUSES = new ParserErrorCode.con3('MULTIPLE_EXTENDS_CLAUSES', 87, "Each class definition can have at most one extends clause");
+ static final ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = new ParserErrorCode.con3('MULTIPLE_IMPLEMENTS_CLAUSES', 88, "Each class definition can have at most one implements clause");
+ static final ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES = new ParserErrorCode.con3('MULTIPLE_LIBRARY_DIRECTIVES', 89, "Only one library directive may be declared in a file");
+ static final ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS = new ParserErrorCode.con3('MULTIPLE_NAMED_PARAMETER_GROUPS', 90, "Cannot have multiple groups of named parameters in a single parameter list");
+ static final ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES = new ParserErrorCode.con3('MULTIPLE_PART_OF_DIRECTIVES', 91, "Only one part-of directive may be declared in a file");
+ static final ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS = new ParserErrorCode.con3('MULTIPLE_POSITIONAL_PARAMETER_GROUPS', 92, "Cannot have multiple groups of positional parameters in a single parameter list");
+ static final ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = new ParserErrorCode.con3('MULTIPLE_VARIABLES_IN_FOR_EACH', 93, "A single loop variable must be declared in a for-each loop before the 'in', but %s were found");
+ static final ParserErrorCode MULTIPLE_WITH_CLAUSES = new ParserErrorCode.con3('MULTIPLE_WITH_CLAUSES', 94, "Each class definition can have at most one with clause");
+ static final ParserErrorCode NAMED_FUNCTION_EXPRESSION = new ParserErrorCode.con3('NAMED_FUNCTION_EXPRESSION', 95, "Function expressions cannot be named");
+ static final ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = new ParserErrorCode.con3('NAMED_PARAMETER_OUTSIDE_GROUP', 96, "Named parameters must be enclosed in curly braces ('{' and '}')");
+ static final ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = new ParserErrorCode.con3('NATIVE_CLAUSE_IN_NON_SDK_CODE', 97, "Native clause can only be used in the SDK and code that is loaded through native extensions");
+ static final ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE = new ParserErrorCode.con3('NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE', 98, "Native functions can only be declared in the SDK and code that is loaded through native extensions");
+ static final ParserErrorCode NON_CONSTRUCTOR_FACTORY = new ParserErrorCode.con3('NON_CONSTRUCTOR_FACTORY', 99, "Only constructors can be declared to be a 'factory'");
+ static final ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = new ParserErrorCode.con3('NON_IDENTIFIER_LIBRARY_NAME', 100, "The name of a library must be an identifier");
+ static final ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = new ParserErrorCode.con3('NON_PART_OF_DIRECTIVE_IN_PART', 101, "The part-of directive must be the only directive in a part");
+ static final ParserErrorCode NON_USER_DEFINABLE_OPERATOR = new ParserErrorCode.con3('NON_USER_DEFINABLE_OPERATOR', 102, "The operator '%s' is not user definable");
+ static final ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = new ParserErrorCode.con3('NORMAL_BEFORE_OPTIONAL_PARAMETERS', 103, "Normal parameters must occur before optional parameters");
+ static final ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT = new ParserErrorCode.con3('POSITIONAL_AFTER_NAMED_ARGUMENT', 104, "Positional arguments must occur before named arguments");
+ static final ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP = new ParserErrorCode.con3('POSITIONAL_PARAMETER_OUTSIDE_GROUP', 105, "Positional parameters must be enclosed in square brackets ('[' and ']')");
+ static final ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR = new ParserErrorCode.con3('REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR', 106, "Only factory constructor can specify '=' redirection.");
+ static final ParserErrorCode SETTER_IN_FUNCTION = new ParserErrorCode.con3('SETTER_IN_FUNCTION', 107, "Setters cannot be defined within methods or functions");
+ static final ParserErrorCode STATIC_AFTER_CONST = new ParserErrorCode.con3('STATIC_AFTER_CONST', 108, "The modifier 'static' should be before the modifier 'const'");
+ static final ParserErrorCode STATIC_AFTER_FINAL = new ParserErrorCode.con3('STATIC_AFTER_FINAL', 109, "The modifier 'static' should be before the modifier 'final'");
+ static final ParserErrorCode STATIC_AFTER_VAR = new ParserErrorCode.con3('STATIC_AFTER_VAR', 110, "The modifier 'static' should be before the modifier 'var'");
+ static final ParserErrorCode STATIC_CONSTRUCTOR = new ParserErrorCode.con3('STATIC_CONSTRUCTOR', 111, "Constructors cannot be static");
+ static final ParserErrorCode STATIC_GETTER_WITHOUT_BODY = new ParserErrorCode.con3('STATIC_GETTER_WITHOUT_BODY', 112, "A 'static' getter must have a body");
+ static final ParserErrorCode STATIC_OPERATOR = new ParserErrorCode.con3('STATIC_OPERATOR', 113, "Operators cannot be static");
+ static final ParserErrorCode STATIC_SETTER_WITHOUT_BODY = new ParserErrorCode.con3('STATIC_SETTER_WITHOUT_BODY', 114, "A 'static' setter must have a body");
+ static final ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = new ParserErrorCode.con3('STATIC_TOP_LEVEL_DECLARATION', 115, "Top-level declarations cannot be declared to be 'static'");
+ static final ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE = new ParserErrorCode.con3('SWITCH_HAS_CASE_AFTER_DEFAULT_CASE', 116, "The 'default' case should be the last case in a switch statement");
+ static final ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES = new ParserErrorCode.con3('SWITCH_HAS_MULTIPLE_DEFAULT_CASES', 117, "The 'default' case can only be declared once");
+ static final ParserErrorCode TOP_LEVEL_OPERATOR = new ParserErrorCode.con3('TOP_LEVEL_OPERATOR', 118, "Operators must be declared within a class");
+ static final ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP', 119, "There is no '%s' to open a parameter group");
+ static final ParserErrorCode UNEXPECTED_TOKEN = new ParserErrorCode.con3('UNEXPECTED_TOKEN', 120, "Unexpected token '%s'");
+ static final ParserErrorCode WITH_BEFORE_EXTENDS = new ParserErrorCode.con3('WITH_BEFORE_EXTENDS', 121, "The extends clause must be before the with clause");
+ static final ParserErrorCode WITH_WITHOUT_EXTENDS = new ParserErrorCode.con3('WITH_WITHOUT_EXTENDS', 122, "The with clause cannot be used without an extends clause");
+ static final ParserErrorCode WRONG_SEPARATOR_FOR_NAMED_PARAMETER = new ParserErrorCode.con3('WRONG_SEPARATOR_FOR_NAMED_PARAMETER', 123, "The default value of a named parameter should be preceeded by ':'");
+ static final ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER = new ParserErrorCode.con3('WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER', 124, "The default value of a positional parameter should be preceeded by '='");
+ static final ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP = new ParserErrorCode.con3('WRONG_TERMINATOR_FOR_PARAMETER_GROUP', 125, "Expected '%s' to close parameter group");
+ static final ParserErrorCode VAR_AND_TYPE = new ParserErrorCode.con3('VAR_AND_TYPE', 126, "Variables cannot be declared using both 'var' and a type name; remove the 'var'");
+ static final ParserErrorCode VAR_AS_TYPE_NAME = new ParserErrorCode.con3('VAR_AS_TYPE_NAME', 127, "The keyword 'var' cannot be used as a type name");
+ static final ParserErrorCode VAR_CLASS = new ParserErrorCode.con3('VAR_CLASS', 128, "Classes cannot be declared to be 'var'");
+ static final ParserErrorCode VAR_RETURN_TYPE = new ParserErrorCode.con3('VAR_RETURN_TYPE', 129, "The return type cannot be 'var'");
+ static final ParserErrorCode VAR_TYPEDEF = new ParserErrorCode.con3('VAR_TYPEDEF', 130, "Type aliases cannot be declared to be 'var'");
+ static final ParserErrorCode VOID_PARAMETER = new ParserErrorCode.con3('VOID_PARAMETER', 131, "Parameters cannot have a type of 'void'");
+ static final ParserErrorCode VOID_VARIABLE = new ParserErrorCode.con3('VOID_VARIABLE', 132, "Variables cannot have a type of 'void'");
static final List<ParserErrorCode> values = [
ABSTRACT_CLASS_MEMBER,
ABSTRACT_STATIC_METHOD,
ABSTRACT_TOP_LEVEL_FUNCTION,
ABSTRACT_TOP_LEVEL_VARIABLE,
ABSTRACT_TYPEDEF,
+ ASSERT_DOES_NOT_TAKE_ASSIGNMENT,
+ ASSERT_DOES_NOT_TAKE_CASCADE,
+ ASSERT_DOES_NOT_TAKE_THROW,
+ ASSERT_DOES_NOT_TAKE_RETHROW,
BREAK_OUTSIDE_OF_LOOP,
CONST_AND_FINAL,
CONST_AND_VAR,
diff --git a/pkg/analyzer_experimental/lib/src/generated/resolver.dart b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
index 535ce2e..4266226 100644
--- a/pkg/analyzer_experimental/lib/src/generated/resolver.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
@@ -8,8 +8,8 @@
import 'source.dart';
import 'error.dart';
import 'scanner.dart' as sc;
-import 'utilities_general.dart';
import 'utilities_dart.dart';
+import 'utilities_general.dart';
import 'ast.dart';
import 'parser.dart' show Parser, ParserErrorCode;
import 'sdk.dart' show DartSdk, SdkLibrary;
@@ -35,22 +35,25 @@
*/
CompilationUnitElementImpl buildCompilationUnit(Source source, CompilationUnit unit) {
TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.resolve.start();
- if (unit == null) {
- return null;
+ try {
+ if (unit == null) {
+ return null;
+ }
+ ElementHolder holder = new ElementHolder();
+ ElementBuilder builder = new ElementBuilder(holder);
+ unit.accept(builder);
+ CompilationUnitElementImpl element = new CompilationUnitElementImpl(source.shortName);
+ element.accessors = holder.accessors;
+ element.functions = holder.functions;
+ element.source = source;
+ element.typeAliases = holder.typeAliases;
+ element.types = holder.types;
+ element.topLevelVariables = holder.topLevelVariables;
+ unit.element = element;
+ return element;
+ } finally {
+ timeCounter.stop();
}
- ElementHolder holder = new ElementHolder();
- ElementBuilder builder = new ElementBuilder(holder);
- unit.accept(builder);
- CompilationUnitElementImpl element = new CompilationUnitElementImpl(source.shortName);
- element.accessors = holder.accessors;
- element.functions = holder.functions;
- element.source = source;
- element.typeAliases = holder.typeAliases;
- element.types = holder.types;
- element.topLevelVariables = holder.topLevelVariables;
- unit.element = element;
- timeCounter.stop();
- return element;
}
}
/**
@@ -1542,7 +1545,7 @@
TypeName typeName = node.type;
Type2 lhsType = expression.staticType;
Type2 rhsType = typeName.type;
- if (lhsType != null && rhsType != null && !lhsType.isDynamic && !rhsType.isDynamic && lhsType.isSubtypeOf(rhsType)) {
+ if (lhsType != null && rhsType != null && !lhsType.isDynamic && !rhsType.isDynamic && lhsType is! TypeParameterType && rhsType is! TypeParameterType && lhsType.isSubtypeOf(rhsType)) {
_errorReporter.reportError2(HintCode.UNNECESSARY_CAST, node, []);
return true;
}
@@ -1862,22 +1865,25 @@
}
void generateForLibrary() {
TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.hints.start();
- for (int i = 0; i < _compilationUnits.length; i++) {
- CompilationUnitElement element = _compilationUnits[i].element;
- if (element != null) {
- if (i == 0) {
- _importsVerifier.inDefiningCompilationUnit = true;
- generateForCompilationUnit(_compilationUnits[i], element.source);
- _importsVerifier.inDefiningCompilationUnit = false;
- } else {
- generateForCompilationUnit(_compilationUnits[i], element.source);
+ try {
+ for (int i = 0; i < _compilationUnits.length; i++) {
+ CompilationUnitElement element = _compilationUnits[i].element;
+ if (element != null) {
+ if (i == 0) {
+ _importsVerifier.inDefiningCompilationUnit = true;
+ generateForCompilationUnit(_compilationUnits[i], element.source);
+ _importsVerifier.inDefiningCompilationUnit = false;
+ } else {
+ generateForCompilationUnit(_compilationUnits[i], element.source);
+ }
}
}
+ ErrorReporter definingCompilationUnitErrorReporter = new ErrorReporter(_errorListener, _compilationUnits[0].element.source);
+ _importsVerifier.generateDuplicateImportHints(definingCompilationUnitErrorReporter);
+ _importsVerifier.generateUnusedImportHints(definingCompilationUnitErrorReporter);
+ } finally {
+ timeCounter.stop();
}
- ErrorReporter definingCompilationUnitErrorReporter = new ErrorReporter(_errorListener, _compilationUnits[0].element.source);
- _importsVerifier.generateDuplicateImportHints(definingCompilationUnitErrorReporter);
- _importsVerifier.generateUnusedImportHints(definingCompilationUnitErrorReporter);
- timeCounter.stop();
}
void generateForCompilationUnit(CompilationUnit unit, Source source) {
ErrorReporter errorReporter = new ErrorReporter(_errorListener, source);
@@ -3330,7 +3336,8 @@
staticElement = resolveInvokedElement2(methodName);
propagatedElement = null;
} else {
- staticElement = resolveInvokedElement(target, getStaticType(target), methodName);
+ Type2 staticType = getStaticType(target);
+ staticElement = resolveInvokedElement(target, staticType, methodName);
propagatedElement = resolveInvokedElement(target, getPropagatedType(target), methodName);
}
staticElement = convertSetterToGetter(staticElement);
@@ -3694,7 +3701,7 @@
}
if (targetType == null) {
return CompileTimeErrorCode.UNDEFINED_FUNCTION;
- } else if (!targetType.isDynamic) {
+ } else if (!targetType.isDynamic && !targetType.isBottom) {
return StaticTypeWarningCode.UNDEFINED_METHOD;
}
}
@@ -3874,7 +3881,7 @@
*/
Type2 getStaticType(Expression expression) {
if (expression is NullLiteral) {
- return _resolver.typeProvider.objectType;
+ return _resolver.typeProvider.bottomType;
}
Type2 staticType = resolveTypeParameter(expression.staticType);
if (staticType is FunctionType) {
@@ -4732,7 +4739,7 @@
* @return `true` if we should report an error
*/
bool shouldReportMissingMember(Type2 type, ExecutableElement member) {
- if (member != null || type == null || type.isDynamic) {
+ if (member != null || type == null || type.isDynamic || type.isBottom) {
return false;
}
return true;
@@ -4786,13 +4793,13 @@
* This is a mapping between each [ClassElement] and a map between the [String] member
* names and the associated [ExecutableElement] in the mixin and superclass chain.
*/
- Map<ClassElement, Map<String, ExecutableElement>> _classLookup;
+ Map<ClassElement, MemberMap> _classLookup;
/**
* This is a mapping between each [ClassElement] and a map between the [String] member
* names and the associated [ExecutableElement] in the interface set.
*/
- Map<ClassElement, Map<String, ExecutableElement>> _interfaceLookup;
+ Map<ClassElement, MemberMap> _interfaceLookup;
/**
* A map between each visited [ClassElement] and the set of [AnalysisError]s found on
@@ -4807,8 +4814,8 @@
*/
InheritanceManager(LibraryElement library) {
this._library = library;
- _classLookup = new Map<ClassElement, Map<String, ExecutableElement>>();
- _interfaceLookup = new Map<ClassElement, Map<String, ExecutableElement>>();
+ _classLookup = new Map<ClassElement, MemberMap>();
+ _interfaceLookup = new Map<ClassElement, MemberMap>();
}
/**
@@ -4829,7 +4836,7 @@
* @return a mapping between the set of all members inherited from the passed [ClassElement]
* superclass hierarchy, and the associated [ExecutableElement]
*/
- Map<String, ExecutableElement> getMapOfMembersInheritedFromClasses(ClassElement classElt) => computeClassChainLookupMap(classElt, new Set<ClassElement>());
+ MemberMap getMapOfMembersInheritedFromClasses(ClassElement classElt) => computeClassChainLookupMap(classElt, new Set<ClassElement>());
/**
* Get and return a mapping between the set of all string names of the members inherited from the
@@ -4839,7 +4846,7 @@
* @return a mapping between the set of all string names of the members inherited from the passed
* [ClassElement] interface hierarchy, and the associated [ExecutableElement].
*/
- Map<String, ExecutableElement> getMapOfMembersInheritedFromInterfaces(ClassElement classElt) => computeInterfaceLookupMap(classElt, new Set<ClassElement>());
+ MemberMap getMapOfMembersInheritedFromInterfaces(ClassElement classElt) => computeInterfaceLookupMap(classElt, new Set<ClassElement>());
/**
* Given some [ClassElement] and some member name, this returns the
@@ -4856,9 +4863,9 @@
if (memberName == null || memberName.isEmpty) {
return null;
}
- ExecutableElement executable = computeClassChainLookupMap(classElt, new Set<ClassElement>())[memberName];
+ ExecutableElement executable = computeClassChainLookupMap(classElt, new Set<ClassElement>()).get(memberName);
if (executable == null) {
- return computeInterfaceLookupMap(classElt, new Set<ClassElement>())[memberName];
+ return computeInterfaceLookupMap(classElt, new Set<ClassElement>()).get(memberName);
}
return executable;
}
@@ -4949,12 +4956,12 @@
* @return a mapping between the set of all string names of the members inherited from the passed
* [ClassElement] superclass hierarchy, and the associated [ExecutableElement]
*/
- Map<String, ExecutableElement> computeClassChainLookupMap(ClassElement classElt, Set<ClassElement> visitedClasses) {
- Map<String, ExecutableElement> resultMap = _classLookup[classElt];
+ MemberMap computeClassChainLookupMap(ClassElement classElt, Set<ClassElement> visitedClasses) {
+ MemberMap resultMap = _classLookup[classElt];
if (resultMap != null) {
return resultMap;
} else {
- resultMap = new Map<String, ExecutableElement>();
+ resultMap = new MemberMap();
}
ClassElement superclassElt = null;
InterfaceType supertype = classElt.supertype;
@@ -4967,11 +4974,12 @@
if (superclassElt != null) {
if (!visitedClasses.contains(superclassElt)) {
javaSetAdd(visitedClasses, classElt);
- resultMap = new Map<String, ExecutableElement>.from(computeClassChainLookupMap(superclassElt, visitedClasses));
+ resultMap = new MemberMap.con2(computeClassChainLookupMap(superclassElt, visitedClasses));
} else {
_classLookup[superclassElt] = resultMap;
return resultMap;
}
+ substituteTypeParametersDownHierarchy(supertype, resultMap);
recordMapWithClassMembers(resultMap, supertype);
}
List<InterfaceType> mixins = classElt.mixins;
@@ -5040,42 +5048,32 @@
* @return a mapping between the set of all string names of the members inherited from the passed
* [ClassElement] interface hierarchy, and the associated [ExecutableElement]
*/
- Map<String, ExecutableElement> computeInterfaceLookupMap(ClassElement classElt, Set<ClassElement> visitedInterfaces) {
- Map<String, ExecutableElement> resultMap = _interfaceLookup[classElt];
+ MemberMap computeInterfaceLookupMap(ClassElement classElt, Set<ClassElement> visitedInterfaces) {
+ MemberMap resultMap = _interfaceLookup[classElt];
if (resultMap != null) {
return resultMap;
} else {
- resultMap = new Map<String, ExecutableElement>();
+ resultMap = new MemberMap();
}
InterfaceType supertype = classElt.supertype;
ClassElement superclassElement = supertype != null ? supertype.element : null;
List<InterfaceType> mixins = classElt.mixins;
List<InterfaceType> interfaces = classElt.interfaces;
- List<Map<String, ExecutableElement>> lookupMaps = new List<Map<String, ExecutableElement>>();
+ List<MemberMap> lookupMaps = new List<MemberMap>();
if (superclassElement != null) {
if (!visitedInterfaces.contains(superclassElement)) {
try {
javaSetAdd(visitedInterfaces, superclassElement);
- Map<String, ExecutableElement> map = computeInterfaceLookupMap(superclassElement, visitedInterfaces);
- map = new Map<String, ExecutableElement>.from(map);
- List<MethodElement> methods = supertype.methods;
- for (MethodElement method in methods) {
- if (method.isAccessibleIn(_library) && !method.isStatic) {
- map[method.name] = method;
- }
- }
- List<PropertyAccessorElement> accessors = supertype.accessors;
- for (PropertyAccessorElement accessor in accessors) {
- if (accessor.isAccessibleIn(_library) && !accessor.isStatic) {
- map[accessor.name] = accessor;
- }
- }
+ MemberMap map = computeInterfaceLookupMap(superclassElement, visitedInterfaces);
+ map = new MemberMap.con2(map);
+ substituteTypeParametersDownHierarchy(supertype, map);
+ recordMapWithClassMembers(map, supertype);
lookupMaps.add(map);
} finally {
visitedInterfaces.remove(superclassElement);
}
} else {
- Map<String, ExecutableElement> map = _interfaceLookup[classElt];
+ MemberMap map = _interfaceLookup[classElt];
if (map != null) {
lookupMaps.add(map);
} else {
@@ -5085,7 +5083,7 @@
}
}
for (InterfaceType mixinType in mixins) {
- Map<String, ExecutableElement> mapWithMixinMembers = new Map<String, ExecutableElement>();
+ MemberMap mapWithMixinMembers = new MemberMap();
recordMapWithClassMembers(mapWithMixinMembers, mixinType);
lookupMaps.add(mapWithMixinMembers);
}
@@ -5095,26 +5093,16 @@
if (!visitedInterfaces.contains(interfaceElement)) {
try {
javaSetAdd(visitedInterfaces, interfaceElement);
- Map<String, ExecutableElement> map = computeInterfaceLookupMap(interfaceElement, visitedInterfaces);
- map = new Map<String, ExecutableElement>.from(map);
- List<MethodElement> methods = interfaceType.methods;
- for (MethodElement method in methods) {
- if (method.isAccessibleIn(_library) && !method.isStatic) {
- map[method.name] = method;
- }
- }
- List<PropertyAccessorElement> accessors = interfaceType.accessors;
- for (PropertyAccessorElement accessor in accessors) {
- if (accessor.isAccessibleIn(_library) && !accessor.isStatic) {
- map[accessor.name] = accessor;
- }
- }
+ MemberMap map = computeInterfaceLookupMap(interfaceElement, visitedInterfaces);
+ map = new MemberMap.con2(map);
+ substituteTypeParametersDownHierarchy(interfaceType, map);
+ recordMapWithClassMembers(map, interfaceType);
lookupMaps.add(map);
} finally {
visitedInterfaces.remove(interfaceElement);
}
} else {
- Map<String, ExecutableElement> map = _interfaceLookup[classElt];
+ MemberMap map = _interfaceLookup[classElt];
if (map != null) {
lookupMaps.add(map);
} else {
@@ -5129,15 +5117,18 @@
return resultMap;
}
Map<String, Set<ExecutableElement>> unionMap = new Map<String, Set<ExecutableElement>>();
- for (Map<String, ExecutableElement> lookupMap in lookupMaps) {
- for (MapEntry<String, ExecutableElement> entry in getMapEntrySet(lookupMap)) {
- String key = entry.getKey();
+ for (MemberMap lookupMap in lookupMaps) {
+ for (int i = 0; i < lookupMap.size; i++) {
+ String key = lookupMap.getKey(i);
+ if (key == null) {
+ break;
+ }
Set<ExecutableElement> set = unionMap[key];
if (set == null) {
set = new Set<ExecutableElement>();
unionMap[key] = set;
}
- javaSetAdd(set, entry.getValue());
+ javaSetAdd(set, lookupMap.getValue(i));
}
}
for (MapEntry<String, Set<ExecutableElement>> entry in getMapEntrySet(unionMap)) {
@@ -5145,7 +5136,7 @@
Set<ExecutableElement> set = entry.getValue();
int numOfEltsWithMatchingNames = set.length;
if (numOfEltsWithMatchingNames == 1) {
- resultMap[key] = new JavaIterator(set).next();
+ resultMap.put(key, new JavaIterator(set).next());
} else {
bool allMethods = true;
bool allSetters = true;
@@ -5186,7 +5177,7 @@
}
if (subtypeOfAllTypes) {
foundSubtypeOfAllTypes = true;
- resultMap[key] = elements[i];
+ resultMap.put(key, elements[i]);
break;
}
}
@@ -5238,17 +5229,17 @@
* [ClassElement] into
* @param type the type that will be recorded into the passed map
*/
- void recordMapWithClassMembers(Map<String, ExecutableElement> map, InterfaceType type) {
+ void recordMapWithClassMembers(MemberMap map, InterfaceType type) {
List<MethodElement> methods = type.methods;
for (MethodElement method in methods) {
if (method.isAccessibleIn(_library) && !method.isStatic) {
- map[method.name] = method;
+ map.put(method.name, method);
}
}
List<PropertyAccessorElement> accessors = type.accessors;
for (PropertyAccessorElement accessor in accessors) {
if (accessor.isAccessibleIn(_library) && !accessor.isStatic) {
- map[accessor.name] = accessor;
+ map.put(accessor.name, accessor);
}
}
}
@@ -5272,6 +5263,27 @@
}
javaSetAdd(errorSet, new AnalysisError.con2(classElt.source, offset, length, errorCode, arguments));
}
+
+ /**
+ * Loop through all of the members in some [MemberMap], performing type parameter
+ * substitutions using a passed supertype.
+ *
+ * @param superType the supertype to substitute into the members of the [MemberMap]
+ * @param map the MemberMap to perform the substitutions on
+ */
+ void substituteTypeParametersDownHierarchy(InterfaceType superType, MemberMap map) {
+ for (int i = 0; i < map.size; i++) {
+ String key = map.getKey(i);
+ ExecutableElement executableElement = map.getValue(i);
+ if (executableElement is MethodMember) {
+ executableElement = MethodMember.from(executableElement as MethodMember, superType);
+ map.put(key, executableElement);
+ } else if (executableElement is PropertyAccessorMember) {
+ executableElement = PropertyAccessorMember.from(executableElement as PropertyAccessorMember, superType);
+ map.put(key, executableElement);
+ }
+ }
+ }
}
/**
* Instances of the class `Library` represent the data about a single library during the
@@ -5844,10 +5856,6 @@
instrumentation.metric3("resolveReferencesAndTypes", "complete");
performConstantEvaluation();
instrumentation.metric3("performConstantEvaluation", "complete");
- if (fullAnalysis) {
- runAdditionalAnalyses();
- instrumentation.metric3("runAdditionalAnalyses", "complete");
- }
return targetLibrary.libraryElement;
} finally {
instrumentation.log();
@@ -5895,10 +5903,6 @@
instrumentation.metric3("resolveReferencesAndTypes", "complete");
performConstantEvaluation();
instrumentation.metric3("performConstantEvaluation", "complete");
- if (fullAnalysis) {
- runAdditionalAnalyses();
- instrumentation.metric3("runAdditionalAnalyses", "complete");
- }
instrumentation.metric2("librariesInCycles", resolvedLibraries.length);
for (Library lib in resolvedLibraries) {
instrumentation.metric2("librariesInCycles-CompilationUnitSources-Size", lib.compilationUnitSources.length);
@@ -6009,6 +6013,11 @@
Library importedLibrary = _libraryMap[importedSource];
if (importedLibrary != null) {
ImportElementImpl importElement = new ImportElementImpl();
+ importElement.offset = directive.offset;
+ StringLiteral uriLiteral = importDirective.uri;
+ if (uriLiteral != null) {
+ importElement.uriEnd = uriLiteral.end;
+ }
importElement.uri = library.getUri(importDirective);
importElement.combinators = buildCombinators(importDirective);
LibraryElement importedLibraryElement = importedLibrary.libraryElement;
@@ -6017,6 +6026,7 @@
}
SimpleIdentifier prefixNode = ((directive as ImportDirective)).prefix;
if (prefixNode != null) {
+ importElement.prefixOffset = prefixNode.offset;
String prefixName = prefixNode.name;
PrefixElementImpl prefix = nameToPrefixMap[prefixName];
if (prefix == null) {
@@ -6029,7 +6039,6 @@
directive.element = importElement;
imports.add(importElement);
if (doesCompilationUnitHavePartOfDirective(importedLibrary.getAST(importedSource))) {
- StringLiteral uriLiteral = importDirective.uri;
errorListener.onError(new AnalysisError.con2(library.librarySource, uriLiteral.offset, uriLiteral.length, CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, [uriLiteral.toSource()]));
}
}
@@ -6091,13 +6100,16 @@
*/
void buildTypeHierarchies() {
TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.resolve.start();
- for (Library library in resolvedLibraries) {
- for (Source source in library.compilationUnitSources) {
- TypeResolverVisitor visitor = new TypeResolverVisitor.con1(library, source, _typeProvider);
- library.getAST(source).accept(visitor);
+ try {
+ for (Library library in resolvedLibraries) {
+ for (Source source in library.compilationUnitSources) {
+ TypeResolverVisitor visitor = new TypeResolverVisitor.con1(library, source, _typeProvider);
+ library.getAST(source).accept(visitor);
+ }
}
+ } finally {
+ timeCounter.stop();
}
- timeCounter.stop();
}
/**
@@ -6311,21 +6323,24 @@
*/
void performConstantEvaluation() {
TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.resolve.start();
- ConstantValueComputer computer = new ConstantValueComputer();
- for (Library library in resolvedLibraries) {
- for (Source source in library.compilationUnitSources) {
- try {
- CompilationUnit unit = library.getAST(source);
- if (unit != null) {
- computer.add(unit);
+ try {
+ ConstantValueComputer computer = new ConstantValueComputer();
+ for (Library library in resolvedLibraries) {
+ for (Source source in library.compilationUnitSources) {
+ try {
+ CompilationUnit unit = library.getAST(source);
+ 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) {
- AnalysisEngine.instance.logger.logError2("Internal Error: Could not access AST for ${source.fullName} during constant evaluation", exception);
}
}
+ computer.computeValues();
+ } finally {
+ timeCounter.stop();
}
- computer.computeValues();
- timeCounter.stop();
}
/**
@@ -6349,16 +6364,19 @@
*/
void resolveReferencesAndTypes2(Library library) {
TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.resolve.start();
- for (Source source in library.compilationUnitSources) {
- ResolverVisitor visitor = new ResolverVisitor.con1(library, source, _typeProvider);
- library.getAST(source).accept(visitor);
- for (ProxyConditionalAnalysisError conditionalCode in visitor.proxyConditionalAnalysisErrors) {
- if (conditionalCode.shouldIncludeErrorCode()) {
- visitor.reportError(conditionalCode.analysisError);
+ try {
+ for (Source source in library.compilationUnitSources) {
+ ResolverVisitor visitor = new ResolverVisitor.con1(library, source, _typeProvider);
+ library.getAST(source).accept(visitor);
+ for (ProxyConditionalAnalysisError conditionalCode in visitor.proxyConditionalAnalysisErrors) {
+ if (conditionalCode.shouldIncludeErrorCode()) {
+ visitor.reportError(conditionalCode.analysisError);
+ }
}
}
+ } finally {
+ timeCounter.stop();
}
- timeCounter.stop();
}
/**
@@ -6381,39 +6399,148 @@
uriContent = Uri.encodeFull(uriContent);
return analysisContext.sourceFactory.resolveUri(librarySource, uriContent);
}
+}
+/**
+ * This class is used to replace uses of `HashMap<String, ExecutableElement>` which are not as
+ * performant as this class.
+ */
+class MemberMap {
/**
- * Run additional analyses, such as the [ConstantVerifier] and [ErrorVerifier]
- * analysis in the current cycle.
- *
- * @throws AnalysisException if any of the identifiers could not be resolved or if the types in
- * the library cannot be analyzed
+ * The current size of this map.
*/
- void runAdditionalAnalyses() {
- for (Library library in resolvedLibraries) {
- runAdditionalAnalyses2(library);
+ int size = 0;
+
+ /**
+ * The array of keys.
+ */
+ List<String> _keys;
+
+ /**
+ * The array of ExecutableElement values.
+ */
+ List<ExecutableElement> _values;
+
+ /**
+ * Default constructor.
+ */
+ MemberMap() : this.con1(10);
+
+ /**
+ * This constructor takes an initial capacity of the map.
+ *
+ * @param initialCapacity the initial capacity
+ */
+ MemberMap.con1(int initialCapacity) {
+ initArrays(initialCapacity);
+ }
+
+ /**
+ * Copy constructor.
+ */
+ MemberMap.con2(MemberMap memberMap) {
+ initArrays(memberMap.size + 5);
+ for (int i = 0; i < memberMap.size; i++) {
+ _keys[i] = memberMap._keys[i];
+ _values[i] = memberMap._values[i];
+ }
+ size = memberMap.size;
+ }
+
+ /**
+ * Given some key, return the ExecutableElement value from the map, if the key does not exist in
+ * the map, `null` is returned.
+ *
+ * @param key some key to look up in the map
+ * @return the associated ExecutableElement value from the map, if the key does not exist in the
+ * map, `null` is returned
+ */
+ ExecutableElement get(String key) {
+ for (int i = 0; i < size; i++) {
+ if (_keys[i] != null && _keys[i] == key) {
+ return _values[i];
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get and return the key at the specified location. If the key/value pair has been removed from
+ * the set, then `null` is returned.
+ *
+ * @param i some non-zero value less than size
+ * @return the key at the passed index
+ * @throw ArrayIndexOutOfBoundsException this exception is thrown if the passed index is less than
+ * zero or greater than or equal to the capacity of the arrays
+ */
+ String getKey(int i) => _keys[i];
+
+ /**
+ * Get and return the ExecutableElement at the specified location. If the key/value pair has been
+ * removed from the set, then then `null` is returned.
+ *
+ * @param i some non-zero value less than size
+ * @return the key at the passed index
+ * @throw ArrayIndexOutOfBoundsException this exception is thrown if the passed index is less than
+ * zero or greater than or equal to the capacity of the arrays
+ */
+ ExecutableElement getValue(int i) => _values[i];
+
+ /**
+ * Given some key/value pair, store the pair in the map. If the key exists already, then the new
+ * value overrides the old value.
+ *
+ * @param key the key to store in the map
+ * @param value the ExecutableElement value to store in the map
+ */
+ void put(String key, ExecutableElement value) {
+ for (int i = 0; i < size; i++) {
+ if (_keys[i] != null && _keys[i] == key) {
+ _values[i] = value;
+ return;
+ }
+ }
+ if (size == _keys.length) {
+ int newArrayLength = size * 2;
+ List<String> keys_new_array = new List<String>(newArrayLength);
+ List<ExecutableElement> values_new_array = new List<ExecutableElement>(newArrayLength);
+ for (int i = 0; i < size; i++) {
+ keys_new_array[i] = _keys[i];
+ }
+ for (int i = 0; i < size; i++) {
+ values_new_array[i] = _values[i];
+ }
+ _keys = keys_new_array;
+ _values = values_new_array;
+ }
+ _keys[size] = key;
+ _values[size] = value;
+ size++;
+ }
+
+ /**
+ * Given some String key, this method replaces the associated key and value pair with `null`
+ * . The size is not decremented with this call, instead it is expected that the users check for
+ * `null`.
+ *
+ * @param key the key of the key/value pair to remove from the map
+ */
+ void remove(String key) {
+ for (int i = 0; i < size; i++) {
+ if (_keys[i] == key) {
+ _keys[i] = null;
+ _values[i] = null;
+ return;
+ }
}
}
/**
- * Run additional analyses, such as the [ConstantVerifier] and [ErrorVerifier]
- * analysis in the given library.
- *
- * @param library the library to have the extra analyses processes run
- * @throws AnalysisException if any of the identifiers could not be resolved or if the types in
- * the library cannot be analyzed
+ * Initializes [keys] and [values].
*/
- void runAdditionalAnalyses2(Library library) {
- TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.errors.start();
- for (Source source in library.compilationUnitSources) {
- ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
- CompilationUnit unit = library.getAST(source);
- ConstantVerifier constantVerifier = new ConstantVerifier(errorReporter, _typeProvider);
- unit.accept(constantVerifier);
- ErrorVerifier errorVerifier = new ErrorVerifier(errorReporter, library.libraryElement, _typeProvider, library.inheritanceManager);
- unit.accept(errorVerifier);
- }
- timeCounter.stop();
+ void initArrays(int initialCapacity) {
+ _keys = new List<String>(initialCapacity);
+ _values = new List<ExecutableElement>(initialCapacity);
}
}
/**
@@ -7010,7 +7137,7 @@
* @param potentialType the potential type of the element
*/
void override2(VariableElement element, Type2 potentialType) {
- if (potentialType == null || identical(potentialType, BottomTypeImpl.instance)) {
+ if (potentialType == null || potentialType.isBottom) {
return;
}
if (element is PropertyInducingElement) {
@@ -8996,10 +9123,9 @@
FunctionType propertyType = ((element as PropertyAccessorElement)).type;
if (propertyType != null) {
Type2 returnType = propertyType.returnType;
- if (returnType is InterfaceType) {
- if (identical(returnType, _typeProvider.functionType)) {
- return _dynamicType;
- }
+ if (returnType.isDartCoreFunction) {
+ return _dynamicType;
+ } else if (returnType is InterfaceType) {
MethodElement callMethod = ((returnType as InterfaceType)).lookUpMethod(ElementResolver.CALL_METHOD_NAME, _resolver.definingLibrary);
if (callMethod != null) {
return callMethod.type.returnType;
@@ -9009,8 +9135,6 @@
if (innerReturnType != null) {
return innerReturnType;
}
- } else if (returnType.isDartCoreFunction) {
- return _dynamicType;
}
if (returnType != null) {
return returnType;
@@ -9274,7 +9398,7 @@
if (propagatedReturnType == null) {
return;
}
- if (identical(propagatedReturnType, BottomTypeImpl.instance)) {
+ if (propagatedReturnType.isBottom) {
return;
}
Type2 staticReturnType = functionElement.returnType;
@@ -9824,6 +9948,31 @@
class TypeResolverVisitor extends ScopedVisitor {
/**
+ * @return `true` if the name of the given [TypeName] is an built-in identifier.
+ */
+ static bool isBuiltInIdentifier(TypeName node) {
+ sc.Token token = node.name.beginToken;
+ return identical(token.type, sc.TokenType.KEYWORD);
+ }
+
+ /**
+ * @return `true` if given [TypeName] is used as a type annotation.
+ */
+ static bool isTypeAnnotation(TypeName node) {
+ ASTNode parent = node.parent;
+ if (parent is VariableDeclarationList) {
+ return identical(((parent as VariableDeclarationList)).type, node);
+ }
+ if (parent is FieldFormalParameter) {
+ return identical(((parent as FieldFormalParameter)).type, node);
+ }
+ if (parent is SimpleFormalParameter) {
+ return identical(((parent as SimpleFormalParameter)).type, node);
+ }
+ return false;
+ }
+
+ /**
* The type representing the type 'dynamic'.
*/
Type2 _dynamicType;
@@ -10107,7 +10256,9 @@
}
if (elementValid && element == null) {
SimpleIdentifier typeNameSimple = getTypeSimpleIdentifier(typeName);
- if (typeNameSimple.name == "boolean") {
+ if (isBuiltInIdentifier(node) && isTypeAnnotation(node)) {
+ reportError5(CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE, typeName, [typeName.name]);
+ } else if (typeNameSimple.name == "boolean") {
reportError5(StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, typeNameSimple, []);
} else if (isTypeNameInCatchClause(node)) {
reportError5(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, typeName, [typeName.name]);
@@ -10998,7 +11149,7 @@
if (enclosingLibrary != null) {
libName2 = enclosingLibrary.definingCompilationUnit.displayName;
}
- _errorListener.onError(new AnalysisError.con2(source, identifier.offset, identifier.length, StaticWarningCode.AMBIGUOUS_IMPORT, [foundEltName, libName1, libName2]));
+ _errorListener.onError(new AnalysisError.con2(getSource2(identifier), identifier.offset, identifier.length, StaticWarningCode.AMBIGUOUS_IMPORT, [foundEltName, libName1, libName2]));
return foundElement;
}
if (foundElement != null) {
@@ -11022,6 +11173,27 @@
}
/**
+ * Return the source that contains the given identifier, or the source associated with this scope
+ * if the source containing the identifier could not be determined.
+ *
+ * @param identifier the identifier whose source is to be returned
+ * @return the source that contains the given identifier
+ */
+ Source getSource2(Identifier identifier) {
+ CompilationUnit unit = identifier.getAncestor(CompilationUnit);
+ if (unit != null) {
+ CompilationUnitElement element = unit.element;
+ if (element != null) {
+ Source source = element.source;
+ if (source != null) {
+ return source;
+ }
+ }
+ }
+ return this.source;
+ }
+
+ /**
* Given a collection of elements that a single name could all be mapped to, remove from the list
* all of the names defined in the SDK. Return the element(s) that remain.
*
@@ -12553,10 +12725,7 @@
}
return null;
}
- Object visitVariableDeclarationList(VariableDeclarationList node) {
- checkForBuiltInIdentifierAsName2(node);
- return super.visitVariableDeclarationList(node);
- }
+ Object visitVariableDeclarationList(VariableDeclarationList node) => super.visitVariableDeclarationList(node);
Object visitVariableDeclarationStatement(VariableDeclarationStatement node) {
checkForFinalNotInitialized2(node.variables);
return super.visitVariableDeclarationStatement(node);
@@ -12674,6 +12843,7 @@
*/
bool checkForAllInvalidOverrideErrorCodes(ExecutableElement executableElement, List<ParameterElement> parameters, List<ASTNode> parameterLocations, SimpleIdentifier errorNameTarget) {
String executableElementName = executableElement.name;
+ bool executableElementPrivate = Identifier.isPrivateName(executableElementName);
ExecutableElement overriddenExecutable = _inheritanceManager.lookupInheritance(_enclosingClass, executableElementName);
bool isGetter = false;
bool isSetter = false;
@@ -12689,9 +12859,16 @@
ClassElement superclassElement = superclassType == null ? null : superclassType.element;
while (superclassElement != null && !visitedClasses.contains(superclassElement)) {
javaSetAdd(visitedClasses, superclassElement);
+ LibraryElement superclassLibrary = superclassElement.library;
List<FieldElement> fieldElts = superclassElement.fields;
for (FieldElement fieldElt in fieldElts) {
- if (fieldElt.name == executableElementName && fieldElt.isStatic) {
+ if (fieldElt.name != executableElementName) {
+ continue;
+ }
+ if (executableElementPrivate && _currentLibrary != superclassLibrary) {
+ continue;
+ }
+ if (fieldElt.isStatic) {
_errorReporter.reportError2(StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC, errorNameTarget, [
executableElementName,
fieldElt.enclosingElement.displayName]);
@@ -12700,7 +12877,13 @@
}
List<MethodElement> methodElements = superclassElement.methods;
for (MethodElement methodElement in methodElements) {
- if (methodElement.name == executableElementName && methodElement.isStatic) {
+ if (methodElement.name != executableElementName) {
+ continue;
+ }
+ if (executableElementPrivate && _currentLibrary != superclassLibrary) {
+ continue;
+ }
+ if (methodElement.isStatic) {
_errorReporter.reportError2(StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC, errorNameTarget, [
executableElementName,
methodElement.enclosingElement.displayName]);
@@ -12825,8 +13008,6 @@
if (parameterElt.parameterKind.isOptional) {
if (parameterElt is ParameterElementImpl) {
overriddenParameterElts.add(parameterElt as ParameterElementImpl);
- } else if (parameterElt is ParameterMember) {
- overriddenParameterElts.add(((parameterElt as ParameterMember)).baseElement as ParameterElementImpl);
}
}
}
@@ -13125,23 +13306,16 @@
* @param argument the argument to evaluate
* @return `true` if and only if an error code is generated on the passed node
* @see StaticWarningCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
- * @see CompileTimeErrorCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
*/
bool checkForArgumentTypeNotAssignable2(Expression argument) {
if (argument == null) {
return false;
}
- ErrorCode errorCode;
- if (_isInConstInstanceCreation || _isEnclosingConstructorConst) {
- errorCode = CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE;
- } else {
- errorCode = StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE;
- }
ParameterElement staticParameterElement = argument.staticParameterElement;
Type2 staticParameterType = staticParameterElement == null ? null : staticParameterElement.type;
ParameterElement propagatedParameterElement = argument.propagatedParameterElement;
Type2 propagatedParameterType = propagatedParameterElement == null ? null : propagatedParameterElement.type;
- return checkForArgumentTypeNotAssignable3(argument, staticParameterType, propagatedParameterType, errorCode);
+ return checkForArgumentTypeNotAssignable3(argument, staticParameterType, propagatedParameterType, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
}
/**
@@ -13152,7 +13326,6 @@
* @param expectedPropagatedType the expected propagated type, may be `null`
* @return `true` if and only if an error code is generated on the passed node
* @see StaticWarningCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
- * @see CompileTimeErrorCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
*/
bool checkForArgumentTypeNotAssignable3(Expression expression, Type2 expectedStaticType, Type2 expectedPropagatedType, ErrorCode errorCode) => checkForArgumentTypeNotAssignable4(expression, expectedStaticType, getStaticType(expression), expectedPropagatedType, expression.propagatedType, errorCode);
@@ -13167,7 +13340,6 @@
* @param actualPropagatedType the expected propagated type of the parameter, may be `null`
* @return `true` if and only if an error code is generated on the passed node
* @see StaticWarningCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
- * @see CompileTimeErrorCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
*/
bool checkForArgumentTypeNotAssignable4(Expression expression, Type2 expectedStaticType, Type2 actualStaticType, Type2 expectedPropagatedType, Type2 actualPropagatedType, ErrorCode errorCode) {
if (actualStaticType == null || expectedStaticType == null) {
@@ -13277,31 +13449,6 @@
}
/**
- * This verifies that the passed variable declaration list does not have a built-in identifier.
- *
- * @param node the variable declaration list to check
- * @return `true` if and only if an error code is generated on the passed node
- * @see CompileTimeErrorCode#BUILT_IN_IDENTIFIER_AS_TYPE
- */
- bool checkForBuiltInIdentifierAsName2(VariableDeclarationList node) {
- TypeName typeName = node.type;
- if (typeName != null) {
- Identifier identifier = typeName.name;
- if (identifier is SimpleIdentifier) {
- SimpleIdentifier simpleIdentifier = identifier as SimpleIdentifier;
- sc.Token token = simpleIdentifier.token;
- if (identical(token.type, sc.TokenType.KEYWORD)) {
- if (((token as sc.KeywordToken)).keyword != sc.Keyword.DYNAMIC) {
- _errorReporter.reportError2(CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE, identifier, [identifier.name]);
- return true;
- }
- }
- }
- }
- return false;
- }
-
- /**
* This verifies that the given switch case is terminated with 'break', 'continue', 'return' or
* 'throw'.
*
@@ -14408,23 +14555,16 @@
* @param argument the expression to which the operator is being applied
* @return `true` if and only if an error code is generated on the passed node
* @see StaticWarningCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
- * @see CompileTimeErrorCode#ARGUMENT_TYPE_NOT_ASSIGNABLE
*/
bool checkForIntNotAssignable(Expression argument) {
if (argument == null) {
return false;
}
- ErrorCode errorCode;
- if (_isInConstInstanceCreation || _isEnclosingConstructorConst) {
- errorCode = CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE;
- } else {
- errorCode = StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE;
- }
ParameterElement staticParameterElement = argument.staticParameterElement;
Type2 staticParameterType = staticParameterElement == null ? null : staticParameterElement.type;
ParameterElement propagatedParameterElement = argument.propagatedParameterElement;
Type2 propagatedParameterType = propagatedParameterElement == null ? null : propagatedParameterElement.type;
- return checkForArgumentTypeNotAssignable4(argument, staticParameterType, _typeProvider.intType, propagatedParameterType, _typeProvider.intType, errorCode);
+ return checkForArgumentTypeNotAssignable4(argument, staticParameterType, _typeProvider.intType, propagatedParameterType, _typeProvider.intType, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
}
/**
@@ -14849,11 +14989,15 @@
return false;
}
Set<ExecutableElement> missingOverrides = new Set<ExecutableElement>();
- Map<String, ExecutableElement> membersInheritedFromInterfaces = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(_enclosingClass);
- Map<String, ExecutableElement> membersInheritedFromSuperclasses = _inheritanceManager.getMapOfMembersInheritedFromClasses(_enclosingClass);
- for (MapEntry<String, ExecutableElement> entry in getMapEntrySet(membersInheritedFromInterfaces)) {
- ExecutableElement executableElt = entry.getValue();
- ExecutableElement elt = membersInheritedFromSuperclasses[executableElt.name];
+ MemberMap membersInheritedFromInterfaces = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(_enclosingClass);
+ MemberMap membersInheritedFromSuperclasses = _inheritanceManager.getMapOfMembersInheritedFromClasses(_enclosingClass);
+ for (int i = 0; i < membersInheritedFromInterfaces.size; i++) {
+ String memberName = membersInheritedFromInterfaces.getKey(i);
+ ExecutableElement executableElt = membersInheritedFromInterfaces.getValue(i);
+ if (memberName == null) {
+ break;
+ }
+ ExecutableElement elt = membersInheritedFromSuperclasses.get(executableElt.name);
if (elt != null) {
if (elt is MethodElement && !((elt as MethodElement)).isAbstract) {
continue;
@@ -14862,13 +15006,11 @@
}
}
if (executableElt is MethodElement) {
- String methodName = entry.getKey();
- if (!methodsInEnclosingClass.contains(methodName) && !memberHasConcreteMethodImplementationInSuperclassChain(_enclosingClass, methodName, new List<ClassElement>())) {
+ if (!methodsInEnclosingClass.contains(memberName) && !memberHasConcreteMethodImplementationInSuperclassChain(_enclosingClass, memberName, new List<ClassElement>())) {
javaSetAdd(missingOverrides, executableElt);
}
} else if (executableElt is PropertyAccessorElement) {
- String accessorName = entry.getKey();
- if (!accessorsInEnclosingClass.contains(accessorName) && !memberHasConcreteAccessorImplementationInSuperclassChain(_enclosingClass, accessorName, new List<ClassElement>())) {
+ if (!accessorsInEnclosingClass.contains(memberName) && !memberHasConcreteAccessorImplementationInSuperclassChain(_enclosingClass, memberName, new List<ClassElement>())) {
javaSetAdd(missingOverrides, executableElt);
}
}
@@ -15349,7 +15491,7 @@
bool checkForReturnOfInvalidType(Expression returnExpression, Type2 expectedReturnType) {
Type2 staticReturnType = getStaticType(returnExpression);
if (expectedReturnType.isVoid) {
- if (staticReturnType.isVoid || staticReturnType.isDynamic || identical(staticReturnType, BottomTypeImpl.instance)) {
+ if (staticReturnType.isVoid || staticReturnType.isDynamic || staticReturnType.isBottom) {
return false;
}
_errorReporter.reportError2(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, returnExpression, [
@@ -15814,16 +15956,13 @@
}
}
bool isFunctionType(Type2 type) {
- if (type.isDynamic || identical(type, BottomTypeImpl.instance)) {
+ if (type.isDynamic || type.isBottom) {
return true;
- } else if (type is InterfaceType) {
- if (identical(type, _typeProvider.functionType)) {
- return true;
- }
- MethodElement callMethod = ((type as InterfaceType)).lookUpMethod(ElementResolver.CALL_METHOD_NAME, _currentLibrary);
- return callMethod != null;
} else if (type is FunctionType || type.isDartCoreFunction) {
return true;
+ } else if (type is InterfaceType) {
+ MethodElement callMethod = ((type as InterfaceType)).lookUpMethod(ElementResolver.CALL_METHOD_NAME, _currentLibrary);
+ return callMethod != null;
}
return false;
}
diff --git a/pkg/analyzer_experimental/lib/src/generated/scanner.dart b/pkg/analyzer_experimental/lib/src/generated/scanner.dart
index 7ee43be..b255e75 100644
--- a/pkg/analyzer_experimental/lib/src/generated/scanner.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/scanner.dart
@@ -1107,6 +1107,15 @@
next = advance();
if (next == -1) {
break outer;
+ } else if (next == 0xD) {
+ next = advance();
+ if (next == 0xA) {
+ next = advance();
+ }
+ recordStartOfLine();
+ } else if (next == 0xA) {
+ recordStartOfLine();
+ next = advance();
}
}
next = advance();
@@ -1151,11 +1160,36 @@
if (next == -1) {
break;
}
- if (next == 0xD || next == 0xA) {
+ bool missingCharacter = false;
+ if (next == 0xD) {
+ missingCharacter = true;
+ next = advance();
+ if (next == 0xA) {
+ next = advance();
+ }
+ recordStartOfLine();
+ } else if (next == 0xA) {
+ missingCharacter = true;
+ recordStartOfLine();
+ next = advance();
+ } else {
+ next = advance();
+ }
+ if (missingCharacter) {
_errorListener.onError(new AnalysisError.con2(source, offset - 1, 1, ScannerErrorCode.CHARACTER_EXPECTED_AFTER_SLASH, []));
}
+ } else if (next == 0xD) {
+ next = advance();
+ if (next == 0xA) {
+ next = advance();
+ }
+ recordStartOfLine();
+ } else if (next == 0xA) {
+ recordStartOfLine();
+ next = advance();
+ } else {
+ next = advance();
}
- next = advance();
}
reportError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, []);
appendStringToken(TokenType.STRING, getString(start, 0));
diff --git a/pkg/analyzer_experimental/lib/src/generated/sdk_io.dart b/pkg/analyzer_experimental/lib/src/generated/sdk_io.dart
index 7abbe9a..5289fb2 100644
--- a/pkg/analyzer_experimental/lib/src/generated/sdk_io.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/sdk_io.dart
@@ -416,7 +416,7 @@
JavaFile librariesFile = new JavaFile.relative(new JavaFile.relative(libraryDirectory, _INTERNAL_DIR), _LIBRARIES_FILE);
String contents = librariesFile.readAsStringSync();
_libraryMap = new SdkLibrariesReader().readFrom(librariesFile, contents);
- } catch (exception) {
+ } on JavaException catch (exception) {
AnalysisEngine.instance.logger.logError3(exception);
_libraryMap = new LibraryMap();
}
diff --git a/pkg/analyzer_experimental/lib/src/generated/source.dart b/pkg/analyzer_experimental/lib/src/generated/source.dart
index 8fbc1c4..e0d3c4d 100644
--- a/pkg/analyzer_experimental/lib/src/generated/source.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/source.dart
@@ -88,7 +88,7 @@
}
}
throw new IllegalArgumentException("No resolver for kind: ${kind}");
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Invalid URI in encoding");
}
}
diff --git a/pkg/analyzer_experimental/lib/src/generated/source_io.dart b/pkg/analyzer_experimental/lib/src/generated/source_io.dart
index 8c11927..692b0e2 100644
--- a/pkg/analyzer_experimental/lib/src/generated/source_io.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/source_io.dart
@@ -95,7 +95,7 @@
try {
Uri resolvedUri = file.toURI().resolveUri(containedUri);
return new FileBasedSource.con2(_contentCache, new JavaFile.fromUri(resolvedUri), _uriKind);
- } catch (exception) {
+ } on JavaException catch (exception) {
}
return null;
}
@@ -222,7 +222,7 @@
String relPath = sourcePath.substring(pkgCanonicalPath.length);
return parseUriWithException("${PACKAGE_SCHEME}:${pkgFolder.getName()}${relPath}");
}
- } catch (e) {
+ } on JavaException catch (e) {
}
}
}
diff --git a/pkg/analyzer_experimental/test/generated/element_test.dart b/pkg/analyzer_experimental/test/generated/element_test.dart
index 954592e..c7f2f6a 100644
--- a/pkg/analyzer_experimental/test/generated/element_test.dart
+++ b/pkg/analyzer_experimental/test/generated/element_test.dart
@@ -1258,7 +1258,7 @@
InterfaceType argumentType = ElementFactory.classElement2("B", []).type;
type.substitute2(<Type2> [argumentType], <Type2> []);
JUnitTestCase.fail("Expected to encounter exception, argument and parameter type array lengths not equal.");
- } catch (e) {
+ } on JavaException catch (e) {
}
}
void test_substitute_notEqual() {
diff --git a/pkg/analyzer_experimental/test/generated/parser_test.dart b/pkg/analyzer_experimental/test/generated/parser_test.dart
index 35644e7..b2dcc68 100644
--- a/pkg/analyzer_experimental/test/generated/parser_test.dart
+++ b/pkg/analyzer_experimental/test/generated/parser_test.dart
@@ -3207,6 +3207,15 @@
EngineTestCase.assertSize(3, statement.members[0].statements);
JUnitTestCase.assertNotNull(statement.rightBracket);
}
+ void test_parseSymbolLiteral_builtInIdentifier() {
+ SymbolLiteral literal = ParserTestCase.parse5("parseSymbolLiteral", "#dynamic.static.abstract", []);
+ JUnitTestCase.assertNotNull(literal.poundSign);
+ List<Token> components = literal.components;
+ EngineTestCase.assertLength(3, components);
+ JUnitTestCase.assertEquals("dynamic", components[0].lexeme);
+ JUnitTestCase.assertEquals("static", components[1].lexeme);
+ JUnitTestCase.assertEquals("abstract", components[2].lexeme);
+ }
void test_parseSymbolLiteral_multiple() {
SymbolLiteral literal = ParserTestCase.parse5("parseSymbolLiteral", "#a.b.c", []);
JUnitTestCase.assertNotNull(literal.poundSign);
@@ -5688,6 +5697,10 @@
final __test = new SimpleParserTest();
runJUnitTest(__test, __test.test_parseSwitchStatement_labeledStatementInCase);
});
+ _ut.test('test_parseSymbolLiteral_builtInIdentifier', () {
+ final __test = new SimpleParserTest();
+ runJUnitTest(__test, __test.test_parseSymbolLiteral_builtInIdentifier);
+ });
_ut.test('test_parseSymbolLiteral_multiple', () {
final __test = new SimpleParserTest();
runJUnitTest(__test, __test.test_parseSymbolLiteral_multiple);
@@ -6088,11 +6101,11 @@
EngineTestCase.assertInstanceOf(BinaryExpression, expression.leftOperand);
}
void test_bitwiseAndExpression_precedence_equality_left() {
- BinaryExpression expression = ParserTestCase.parseExpression("x == y & z", []);
+ BinaryExpression expression = ParserTestCase.parseExpression("x == y && z", []);
EngineTestCase.assertInstanceOf(BinaryExpression, expression.leftOperand);
}
void test_bitwiseAndExpression_precedence_equality_right() {
- BinaryExpression expression = ParserTestCase.parseExpression("x & y == z", []);
+ BinaryExpression expression = ParserTestCase.parseExpression("x && y == z", []);
EngineTestCase.assertInstanceOf(BinaryExpression, expression.rightOperand);
}
void test_bitwiseAndExpression_super() {
@@ -6178,11 +6191,11 @@
EngineTestCase.assertInstanceOf(BinaryExpression, expression.leftOperand);
}
void test_logicalAndExpression_precedence_bitwiseOr_left() {
- BinaryExpression expression = ParserTestCase.parseExpression("x | y && z", []);
+ BinaryExpression expression = ParserTestCase.parseExpression("x | y < z", []);
EngineTestCase.assertInstanceOf(BinaryExpression, expression.leftOperand);
}
void test_logicalAndExpression_precedence_bitwiseOr_right() {
- BinaryExpression expression = ParserTestCase.parseExpression("x && y | z", []);
+ BinaryExpression expression = ParserTestCase.parseExpression("x < y | z", []);
EngineTestCase.assertInstanceOf(BinaryExpression, expression.rightOperand);
}
void test_logicalOrExpression() {
@@ -6859,14 +6872,14 @@
JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
}
void test_bitwiseAndExpression_precedence_equality_left() {
- BinaryExpression expression = ParserTestCase.parseExpression("== &", [
+ BinaryExpression expression = ParserTestCase.parseExpression("== &&", [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER]);
EngineTestCase.assertInstanceOf(BinaryExpression, expression.leftOperand);
}
void test_bitwiseAndExpression_precedence_equality_right() {
- BinaryExpression expression = ParserTestCase.parseExpression("& ==", [
+ BinaryExpression expression = ParserTestCase.parseExpression("&& ==", [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER]);
@@ -7657,6 +7670,18 @@
void test_abstractTypeDef() {
ParserTestCase.parseCompilationUnit("abstract typedef F();", [ParserErrorCode.ABSTRACT_TYPEDEF]);
}
+ void test_assertDoesNotTakeAssignment() {
+ ParserTestCase.parse5("parseAssertStatement", "assert(b = true);", [ParserErrorCode.ASSERT_DOES_NOT_TAKE_ASSIGNMENT]);
+ }
+ void test_assertDoesNotTakeCascades() {
+ ParserTestCase.parse5("parseAssertStatement", "assert(new A()..m());", [ParserErrorCode.ASSERT_DOES_NOT_TAKE_CASCADE]);
+ }
+ void test_assertDoesNotTakeRethrow() {
+ ParserTestCase.parse5("parseAssertStatement", "assert(rethrow);", [ParserErrorCode.ASSERT_DOES_NOT_TAKE_RETHROW]);
+ }
+ void test_assertDoesNotTakeThrow() {
+ ParserTestCase.parse5("parseAssertStatement", "assert(throw x);", [ParserErrorCode.ASSERT_DOES_NOT_TAKE_THROW]);
+ }
void test_breakOutsideOfLoop_breakInDoStatement() {
ParserTestCase.parse5("parseDoStatement", "do {break;} while (x);", []);
}
@@ -8410,6 +8435,22 @@
final __test = new ErrorParserTest();
runJUnitTest(__test, __test.test_abstractTypeDef);
});
+ _ut.test('test_assertDoesNotTakeAssignment', () {
+ final __test = new ErrorParserTest();
+ runJUnitTest(__test, __test.test_assertDoesNotTakeAssignment);
+ });
+ _ut.test('test_assertDoesNotTakeCascades', () {
+ final __test = new ErrorParserTest();
+ runJUnitTest(__test, __test.test_assertDoesNotTakeCascades);
+ });
+ _ut.test('test_assertDoesNotTakeRethrow', () {
+ final __test = new ErrorParserTest();
+ runJUnitTest(__test, __test.test_assertDoesNotTakeRethrow);
+ });
+ _ut.test('test_assertDoesNotTakeThrow', () {
+ final __test = new ErrorParserTest();
+ runJUnitTest(__test, __test.test_assertDoesNotTakeThrow);
+ });
_ut.test('test_breakOutsideOfLoop_breakInDoStatement', () {
final __test = new ErrorParserTest();
runJUnitTest(__test, __test.test_breakOutsideOfLoop_breakInDoStatement);
diff --git a/pkg/analyzer_experimental/test/generated/resolver_test.dart b/pkg/analyzer_experimental/test/generated/resolver_test.dart
index 6229a06..8166ad3 100644
--- a/pkg/analyzer_experimental/test/generated/resolver_test.dart
+++ b/pkg/analyzer_experimental/test/generated/resolver_test.dart
@@ -508,7 +508,6 @@
"}"]));
LibraryElement library = resolve(source);
assertNoErrors(source);
- verify([source]);
CompilationUnit unit = resolveCompilationUnit(source, library);
ClassDeclaration classA = unit.declarations[0] as ClassDeclaration;
InterfaceType typeA = classA.element.type;
@@ -1220,6 +1219,13 @@
assertNoErrors(source);
verify([source]);
}
+ void test_constEval_symbol() {
+ addSource2("/math.dart", EngineTestCase.createSource(["library math;", "const PI = 3.14;"]));
+ Source source = addSource(EngineTestCase.createSource(["const C = #foo;", "foo() {}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
void test_constEvalTypeBoolNumString_equal() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -1247,7 +1253,6 @@
"}"]));
resolve(source);
assertNoErrors(source);
- verify([source]);
}
void test_constEvalTypeBoolNumString_notEqual() {
Source source = addSource(EngineTestCase.createSource([
@@ -1875,6 +1880,28 @@
assertNoErrors(source);
verify([source]);
}
+ void test_instanceMethodNameCollidesWithSuperclassStatic_field() {
+ Source source = addSource(EngineTestCase.createSource([
+ "import 'lib.dart';",
+ "class B extends A {",
+ " _m() {}",
+ "}"]));
+ addSource2("/lib.dart", EngineTestCase.createSource(["library L;", "class A {", " static var _m;", "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+ void test_instanceMethodNameCollidesWithSuperclassStatic_method() {
+ Source source = addSource(EngineTestCase.createSource([
+ "import 'lib.dart';",
+ "class B extends A {",
+ " _m() {}",
+ "}"]));
+ addSource2("/lib.dart", EngineTestCase.createSource(["library L;", "class A {", " static _m() {}", "}"]));
+ resolve(source);
+ assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]);
+ verify([source]);
+ }
void test_invalidAnnotation_constantVariable() {
Source source = addSource(EngineTestCase.createSource(["const C = 0;", "@C", "main() {", "}"]));
resolve(source);
@@ -2740,6 +2767,21 @@
assertNoErrors(source);
verify([source]);
}
+ void test_null_callMethod() {
+ Source source = addSource(EngineTestCase.createSource(["main() {", " null.m();", "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ }
+ void test_null_callOperator() {
+ Source source = addSource(EngineTestCase.createSource([
+ "main() {",
+ " null + 5;",
+ " null == 5;",
+ " null[0];",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ }
void test_optionalParameterInOperator_required() {
Source source = addSource(EngineTestCase.createSource(["class A {", " operator +(p) {}", "}"]));
resolve(source);
@@ -3487,6 +3529,10 @@
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_constEval_propertyExtraction_methodStatic_targetType);
});
+ _ut.test('test_constEval_symbol', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_constEval_symbol);
+ });
_ut.test('test_constNotInitialized_field', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_constNotInitialized_field);
@@ -3743,6 +3789,14 @@
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_instanceMemberAccessFromStatic_fromComment);
});
+ _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_field', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclassStatic_field);
+ });
+ _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_method', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclassStatic_method);
+ });
_ut.test('test_invalidAnnotation_constantVariable', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_invalidAnnotation_constantVariable);
@@ -4095,6 +4149,14 @@
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_nonVoidReturnForSetter_method_void);
});
+ _ut.test('test_null_callMethod', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_null_callMethod);
+ });
+ _ut.test('test_null_callOperator', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_null_callOperator);
+ });
_ut.test('test_optionalParameterInOperator_required', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_optionalParameterInOperator_required);
@@ -6938,11 +7000,11 @@
PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, false, _typeProvider.intType);
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(getterG, mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(getterG, mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -6953,11 +7015,11 @@
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.interfaces = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapB);
- JUnitTestCase.assertNull(mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size);
+ JUnitTestCase.assertNull(mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -6968,11 +7030,11 @@
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.mixins = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(getterG, mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(getterG, mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -6983,11 +7045,11 @@
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.supertype = classA.type;
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(methodM, mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(methodM, mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -6998,11 +7060,11 @@
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.interfaces = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapB);
- JUnitTestCase.assertNull(mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size);
+ JUnitTestCase.assertNull(mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7013,11 +7075,11 @@
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.mixins = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(methodM, mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(methodM, mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7027,11 +7089,11 @@
PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, false, _typeProvider.intType);
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(getterG, mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(getterG, mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7042,11 +7104,11 @@
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.interfaces = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(getterG, mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(getterG, mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7057,11 +7119,11 @@
classA.accessors = <PropertyAccessorElement> [getterG];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.mixins = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(getterG, mapB[getterName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(getterG, mapB.get(getterName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7071,11 +7133,11 @@
MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(methodM, mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(methodM, mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7086,11 +7148,11 @@
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.interfaces = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(methodM, mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(methodM, mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7101,11 +7163,11 @@
classA.methods = <MethodElement> [methodM];
ClassElementImpl classB = ElementFactory.classElement2("B", []);
classB.mixins = <InterfaceType> [classA.type];
- Map<String, ExecutableElement> mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
- Map<String, ExecutableElement> mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
- EngineTestCase.assertSize2(_numOfMembersInObject, mapA);
- EngineTestCase.assertSize2(_numOfMembersInObject + 1, mapB);
- JUnitTestCase.assertSame(methodM, mapB[methodName]);
+ MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+ MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+ JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+ JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
+ JUnitTestCase.assertSame(methodM, mapB.get(methodName));
assertNoErrors(classA);
assertNoErrors(classB);
}
@@ -7679,36 +7741,22 @@
CompileTimeErrorCode.ARGUMENT_DEFINITION_TEST_NON_PARAMETER]);
verify([source]);
}
- void test_argumentTypeNotAssignable_const() {
- Source source = addSource(EngineTestCase.createSource([
- "class A {",
- " const A(String p);",
- "}",
- "main() {",
- " const A(42);",
- "}"]));
+ void test_builtInIdentifierAsType_formalParameter_field() {
+ Source source = addSource(EngineTestCase.createSource(["class A {", " var x;", " A(static this.x);", "}"]));
resolve(source);
- assertErrors(source, [CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
verify([source]);
}
- void test_argumentTypeNotAssignable_const_super() {
- Source source = addSource(EngineTestCase.createSource([
- "class A {",
- " const A(String p);",
- "}",
- "class B extends A {",
- " const B() : super(42);",
- "}"]));
+ void test_builtInIdentifierAsType_formalParameter_simple() {
+ Source source = addSource(EngineTestCase.createSource(["f(static x) {", "}"]));
resolve(source);
- assertErrors(source, [CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
verify([source]);
}
- void test_builtInIdentifierAsType() {
+ void test_builtInIdentifierAsType_variableDeclaration() {
Source source = addSource(EngineTestCase.createSource(["f() {", " typedef x;", "}"]));
resolve(source);
- assertErrors(source, [
- CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE,
- StaticWarningCode.UNDEFINED_CLASS]);
+ assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
verify([source]);
}
void test_builtInIdentifierAsTypedefName_classTypeAlias() {
@@ -7907,16 +7955,12 @@
void test_constEvalThrowsException_unaryBitNot_null() {
Source source = addSource("const C = ~null;");
resolve(source);
- assertErrors(source, [
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
- StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+ assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
}
void test_constEvalThrowsException_unaryNegated_null() {
Source source = addSource("const C = -null;");
resolve(source);
- assertErrors(source, [
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
- StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+ assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
}
void test_constEvalThrowsException_unaryNot_null() {
Source source = addSource("const C = !null;");
@@ -9435,7 +9479,7 @@
resolve(source);
assertErrors(source, [
CompileTimeErrorCode.CONST_EVAL_TYPE_INT,
- CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
verify([source]);
}
void test_nonConstValueInInitializer_binary_notNum() {
@@ -9447,7 +9491,7 @@
resolve(source);
assertErrors(source, [
CompileTimeErrorCode.CONST_EVAL_TYPE_NUM,
- CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
verify([source]);
}
void test_nonConstValueInInitializer_field() {
@@ -10203,9 +10247,7 @@
assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
verify([source]);
} else {
- assertErrors(source, [
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
- StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+ assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
}
reset();
}
@@ -10229,7 +10271,7 @@
resolve(source);
assertErrors(source, [
CompileTimeErrorCode.CONST_EVAL_TYPE_INT,
- CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
verify([source]);
reset();
}
@@ -10242,7 +10284,7 @@
resolve(source);
assertErrors(source, [
CompileTimeErrorCode.CONST_EVAL_TYPE_NUM,
- CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
verify([source]);
reset();
}
@@ -10271,18 +10313,6 @@
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_argumentDefinitionTestNonParameter);
});
- _ut.test('test_argumentTypeNotAssignable_const', () {
- final __test = new CompileTimeErrorCodeTest();
- runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const);
- });
- _ut.test('test_argumentTypeNotAssignable_const_super', () {
- final __test = new CompileTimeErrorCodeTest();
- runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const_super);
- });
- _ut.test('test_builtInIdentifierAsType', () {
- final __test = new CompileTimeErrorCodeTest();
- runJUnitTest(__test, __test.test_builtInIdentifierAsType);
- });
_ut.test('test_builtInIdentifierAsTypeName', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_builtInIdentifierAsTypeName);
@@ -10291,6 +10321,18 @@
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_builtInIdentifierAsTypeParameterName);
});
+ _ut.test('test_builtInIdentifierAsType_formalParameter_field', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_builtInIdentifierAsType_formalParameter_field);
+ });
+ _ut.test('test_builtInIdentifierAsType_formalParameter_simple', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_builtInIdentifierAsType_formalParameter_simple);
+ });
+ _ut.test('test_builtInIdentifierAsType_variableDeclaration', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_builtInIdentifierAsType_variableDeclaration);
+ });
_ut.test('test_builtInIdentifierAsTypedefName_classTypeAlias', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_builtInIdentifierAsTypedefName_classTypeAlias);
@@ -12277,7 +12319,7 @@
_visitor = new ResolverVisitor.con1(library, source, _typeProvider);
try {
return _visitor.elementResolver_J2DAccessor as ElementResolver;
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not create resolver", exception);
}
}
@@ -12356,7 +12398,7 @@
_visitor.enclosingClass_J2DAccessor = null;
_visitor.nameScope_J2DAccessor = outerScope;
}
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not resolve node", exception);
}
}
@@ -12383,7 +12425,7 @@
} finally {
_visitor.nameScope_J2DAccessor = outerScope;
}
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not resolve node", exception);
}
}
@@ -12411,7 +12453,7 @@
} finally {
_visitor.labelScope_J2DAccessor = outerScope;
}
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not resolve node", exception);
}
}
@@ -12891,6 +12933,20 @@
StaticWarningCode.AMBIGUOUS_IMPORT,
CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]);
}
+ void test_ambiguousImport_inPart() {
+ Source source = addSource(EngineTestCase.createSource([
+ "library lib;",
+ "import 'lib1.dart';",
+ "import 'lib2.dart';",
+ "part 'part.dart';"]));
+ addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
+ addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+ Source partSource = addSource2("/part.dart", EngineTestCase.createSource(["part of lib;", "class A extends N {}"]));
+ resolve(source);
+ assertErrors(partSource, [
+ StaticWarningCode.AMBIGUOUS_IMPORT,
+ CompileTimeErrorCode.EXTENDS_NON_CLASS]);
+ }
void test_ambiguousImport_instanceCreation() {
Source source = addSource(EngineTestCase.createSource([
"library L;",
@@ -13025,6 +13081,30 @@
assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
verify([source]);
}
+ void test_argumentTypeNotAssignable_const() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " const A(String p);",
+ "}",
+ "main() {",
+ " const A(42);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ verify([source]);
+ }
+ void test_argumentTypeNotAssignable_const_super() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " const A(String p);",
+ "}",
+ "class B extends A {",
+ " const B() : super(42);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
+ verify([source]);
+ }
void test_argumentTypeNotAssignable_index() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -14498,6 +14578,10 @@
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_ambiguousImport_implements);
});
+ _ut.test('test_ambiguousImport_inPart', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_ambiguousImport_inPart);
+ });
_ut.test('test_ambiguousImport_instanceCreation', () {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_ambiguousImport_instanceCreation);
@@ -14542,6 +14626,14 @@
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_argumentTypeNotAssignable_binary);
});
+ _ut.test('test_argumentTypeNotAssignable_const', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const);
+ });
+ _ut.test('test_argumentTypeNotAssignable_const_super', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const_super);
+ });
_ut.test('test_argumentTypeNotAssignable_index', () {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_argumentTypeNotAssignable_index);
@@ -15570,6 +15662,7 @@
provider.stackTraceType.element,
provider.stringType.element,
provider.typeType.element];
+ coreUnit.functions = <FunctionElement> [ElementFactory.functionElement3("identical", provider.boolType.element, <ClassElement> [provider.objectType.element, provider.objectType.element], null)];
LibraryElementImpl coreLibrary = new LibraryElementImpl(sdkContext, ASTFactory.libraryIdentifier2(["dart", "core"]));
coreLibrary.definingCompilationUnit = coreUnit;
CompilationUnitElementImpl htmlUnit = new CompilationUnitElementImpl("html_dartium.dart");
@@ -15990,6 +16083,63 @@
}
}
}
+class MemberMapTest extends JUnitTestCase {
+
+ /**
+ * The null type.
+ */
+ InterfaceType _nullType;
+ void setUp() {
+ _nullType = new TestTypeProvider().nullType;
+ }
+ void test_MemberMap_copyConstructor() {
+ MethodElement m1 = ElementFactory.methodElement("m1", _nullType, []);
+ MethodElement m2 = ElementFactory.methodElement("m2", _nullType, []);
+ MethodElement m3 = ElementFactory.methodElement("m3", _nullType, []);
+ MemberMap map = new MemberMap();
+ map.put(m1.name, m1);
+ map.put(m2.name, m2);
+ map.put(m3.name, m3);
+ MemberMap copy = new MemberMap.con2(map);
+ JUnitTestCase.assertEquals(map.size, copy.size);
+ JUnitTestCase.assertEquals(m1, copy.get(m1.name));
+ JUnitTestCase.assertEquals(m2, copy.get(m2.name));
+ JUnitTestCase.assertEquals(m3, copy.get(m3.name));
+ }
+ void test_MemberMap_override() {
+ MethodElement m1 = ElementFactory.methodElement("m", _nullType, []);
+ MethodElement m2 = ElementFactory.methodElement("m", _nullType, []);
+ MemberMap map = new MemberMap();
+ map.put(m1.name, m1);
+ map.put(m2.name, m2);
+ JUnitTestCase.assertEquals(1, map.size);
+ JUnitTestCase.assertEquals(m2, map.get("m"));
+ }
+ void test_MemberMap_put() {
+ MethodElement m1 = ElementFactory.methodElement("m1", _nullType, []);
+ MemberMap map = new MemberMap();
+ JUnitTestCase.assertEquals(0, map.size);
+ map.put(m1.name, m1);
+ JUnitTestCase.assertEquals(1, map.size);
+ JUnitTestCase.assertEquals(m1, map.get("m1"));
+ }
+ static dartSuite() {
+ _ut.group('MemberMapTest', () {
+ _ut.test('test_MemberMap_copyConstructor', () {
+ final __test = new MemberMapTest();
+ runJUnitTest(__test, __test.test_MemberMap_copyConstructor);
+ });
+ _ut.test('test_MemberMap_override', () {
+ final __test = new MemberMapTest();
+ runJUnitTest(__test, __test.test_MemberMap_override);
+ });
+ _ut.test('test_MemberMap_put', () {
+ final __test = new MemberMapTest();
+ runJUnitTest(__test, __test.test_MemberMap_put);
+ });
+ });
+ }
+}
class LibraryScopeTest extends ResolverTestCase {
void test_creation_empty() {
LibraryElement definingLibrary = createTestLibrary();
@@ -16624,7 +16774,7 @@
Type2 analyze2(Expression node, InterfaceType thisType) {
try {
_analyzer.thisType_J2DAccessor = thisType;
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not set type of 'this'", exception);
}
node.accept(_analyzer);
@@ -16724,7 +16874,7 @@
_visitor.overrideManager.enterScope();
try {
return _visitor.typeAnalyzer_J2DAccessor as StaticTypeAnalyzer;
- } catch (exception) {
+ } on JavaException catch (exception) {
throw new IllegalArgumentException("Could not create analyzer", exception);
}
}
@@ -17308,6 +17458,21 @@
assertNoErrors(source);
verify([source]);
}
+ void test_unnecessaryCast_13855_parameter_A() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A{",
+ " a() {}",
+ "}",
+ "class B<E> {",
+ " E e;",
+ " m() {",
+ " (e as A).a();",
+ " }",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
void test_unnecessaryCast_dynamic_type() {
Source source = addSource(EngineTestCase.createSource(["m(v) {", " var b = v as Object;", "}"]));
resolve(source);
@@ -17453,6 +17618,10 @@
final __test = new NonHintCodeTest();
runJUnitTest(__test, __test.test_overrideEqualsButNotHashCode);
});
+ _ut.test('test_unnecessaryCast_13855_parameter_A', () {
+ final __test = new NonHintCodeTest();
+ runJUnitTest(__test, __test.test_unnecessaryCast_13855_parameter_A);
+ });
_ut.test('test_unnecessaryCast_dynamic_type', () {
final __test = new NonHintCodeTest();
runJUnitTest(__test, __test.test_unnecessaryCast_dynamic_type);
@@ -18342,7 +18511,6 @@
Source source = addSource(EngineTestCase.createSource(["f(var p) {", " return null == p;", "}"]));
resolve(source);
assertNoErrors(source);
- verify([source]);
}
void test_setter_inherited() {
Source source = addSource(EngineTestCase.createSource([
@@ -18613,6 +18781,7 @@
// CompileTimeErrorCodeTest.dartSuite();
// ErrorResolverTest.dartSuite();
// HintCodeTest.dartSuite();
+// MemberMapTest.dartSuite();
// NonHintCodeTest.dartSuite();
// NonErrorResolverTest.dartSuite();
// SimpleResolverTest.dartSuite();
diff --git a/pkg/analyzer_experimental/test/generated/scanner_test.dart b/pkg/analyzer_experimental/test/generated/scanner_test.dart
index e709c47..9c31c55 100644
--- a/pkg/analyzer_experimental/test/generated/scanner_test.dart
+++ b/pkg/analyzer_experimental/test/generated/scanner_test.dart
@@ -529,6 +529,10 @@
final __test = new CharBufferScannerTest();
runJUnitTest(__test, __test.test_lineInfo_multilineComment);
});
+ _ut.test('test_lineInfo_multilineString', () {
+ final __test = new CharBufferScannerTest();
+ runJUnitTest(__test, __test.test_lineInfo_multilineString);
+ });
_ut.test('test_lineInfo_simpleClass', () {
final __test = new CharBufferScannerTest();
runJUnitTest(__test, __test.test_lineInfo_simpleClass);
@@ -665,6 +669,14 @@
final __test = new CharBufferScannerTest();
runJUnitTest(__test, __test.test_string_multi_double);
});
+ _ut.test('test_string_multi_embeddedQuotes', () {
+ final __test = new CharBufferScannerTest();
+ runJUnitTest(__test, __test.test_string_multi_embeddedQuotes);
+ });
+ _ut.test('test_string_multi_embeddedQuotes_escapedChar', () {
+ final __test = new CharBufferScannerTest();
+ runJUnitTest(__test, __test.test_string_multi_embeddedQuotes_escapedChar);
+ });
_ut.test('test_string_multi_interpolation_block', () {
final __test = new CharBufferScannerTest();
runJUnitTest(__test, __test.test_string_multi_interpolation_block);
@@ -1184,6 +1196,10 @@
final __test = new StringScannerTest();
runJUnitTest(__test, __test.test_lineInfo_multilineComment);
});
+ _ut.test('test_lineInfo_multilineString', () {
+ final __test = new StringScannerTest();
+ runJUnitTest(__test, __test.test_lineInfo_multilineString);
+ });
_ut.test('test_lineInfo_simpleClass', () {
final __test = new StringScannerTest();
runJUnitTest(__test, __test.test_lineInfo_simpleClass);
@@ -1324,6 +1340,14 @@
final __test = new StringScannerTest();
runJUnitTest(__test, __test.test_string_multi_double);
});
+ _ut.test('test_string_multi_embeddedQuotes', () {
+ final __test = new StringScannerTest();
+ runJUnitTest(__test, __test.test_string_multi_embeddedQuotes);
+ });
+ _ut.test('test_string_multi_embeddedQuotes_escapedChar', () {
+ final __test = new StringScannerTest();
+ runJUnitTest(__test, __test.test_string_multi_embeddedQuotes_escapedChar);
+ });
_ut.test('test_string_multi_interpolation_block', () {
final __test = new StringScannerTest();
runJUnitTest(__test, __test.test_string_multi_interpolation_block);
@@ -1794,6 +1818,13 @@
new AbstractScannerTest_ExpectedLocation(4, 2, 2),
new AbstractScannerTest_ExpectedLocation(source.length - 1, 3, 3)]);
}
+ void test_lineInfo_multilineString() {
+ String source = "'''a\r\nbc\r\nd'''";
+ assertLineInfo(source, [
+ new AbstractScannerTest_ExpectedLocation(0, 1, 1),
+ new AbstractScannerTest_ExpectedLocation(7, 2, 2),
+ new AbstractScannerTest_ExpectedLocation(source.length - 1, 3, 4)]);
+ }
void test_lineInfo_simpleClass() {
String source = "class Test {\r\n String s = '...';\r\n int get x => s.MISSING_GETTER;\r\n}";
assertLineInfo(source, [
@@ -1917,7 +1948,13 @@
JUnitTestCase.assertEquals(token, next.previous);
}
void test_string_multi_double() {
- assertToken(TokenType.STRING, "\"\"\"multi-line\nstring\"\"\"");
+ assertToken(TokenType.STRING, "\"\"\"line1\nline2\"\"\"");
+ }
+ void test_string_multi_embeddedQuotes() {
+ assertToken(TokenType.STRING, "\"\"\"line1\n\"\"\nline2\"\"\"");
+ }
+ void test_string_multi_embeddedQuotes_escapedChar() {
+ assertToken(TokenType.STRING, "\"\"\"a\"\"\\tb\"\"\"");
}
void test_string_multi_interpolation_block() {
assertTokens("\"Hello \${name}!\"", [
@@ -1944,7 +1981,7 @@
assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''string");
}
void test_string_raw_multi_double() {
- assertToken(TokenType.STRING, "r\"\"\"string\"\"\"");
+ assertToken(TokenType.STRING, "r\"\"\"line1\nline2\"\"\"");
}
void test_string_raw_multi_single() {
assertToken(TokenType.STRING, "r'''string'''");
diff --git a/pkg/polymer/lib/src/build/runner.dart b/pkg/polymer/lib/src/build/runner.dart
index 3596e92..064ac08 100644
--- a/pkg/polymer/lib/src/build/runner.dart
+++ b/pkg/polymer/lib/src/build/runner.dart
@@ -210,10 +210,11 @@
var currentPackage = options.currentPackage;
var transformTests = options.transformTests;
var outPackages = path.join(options.outDir, 'packages');
- for (var asset in assets) {
+
+ return Future.forEach(assets, (asset) {
var id = asset.id;
var dir = _firstDir(id.path);
- if (dir == null) continue;
+ if (dir == null) return null;
var filepath;
if (dir == 'lib') {
@@ -226,12 +227,11 @@
filepath = path.join(options.outDir, _toSystemPath(id.path));
} else {
// TODO(sigmund): do something about other assets?
- continue;
+ return null;
}
- futures.add(_writeAsset(filepath, asset));
- }
- return Future.wait(futures);
+ return _writeAsset(filepath, asset);
+ });
}
/**
@@ -271,16 +271,15 @@
_ensureDir(outPackages);
// Copy all the files we didn't process
- var futures = [];
var dirs = options.packageDirs;
- for (var package in _polymerPackageDependencies) {
- for (var relpath in _listPackageDir(package, 'lib', options)) {
+
+ return Future.forEach(_polymerPackageDependencies, (package) {
+ return Future.forEach(_listPackageDir(package, 'lib', options), (relpath) {
var inpath = path.join(dirs[package], relpath);
var outpath = path.join(outPackages, package, relpath.substring(4));
- futures.add(_copyFile(inpath, outpath));
- }
- }
- return Future.wait(futures);
+ return _copyFile(inpath, outpath);
+ });
+ });
}
/** Ensure [dirpath] exists. */
@@ -301,14 +300,11 @@
/** Copy a file from [inpath] to [outpath]. */
Future _copyFile(String inpath, String outpath) {
_ensureDir(path.dirname(outpath));
- var writer = new File(outpath).openWrite();
- return writer.addStream(new File(inpath).openRead())
- .then((_) => writer.close());
+ return new File(inpath).openRead().pipe(new File(outpath).openWrite());
}
/** Write contents of an [asset] into a file at [filepath]. */
Future _writeAsset(String filepath, Asset asset) {
_ensureDir(path.dirname(filepath));
- var writer = new File(filepath).openWrite();
- return writer.addStream(asset.read()).then((_) => writer.close());
+ return asset.read().pipe(new File(filepath).openWrite());
}
diff --git a/tests/co19/co19-analyzer2.status b/tests/co19/co19-analyzer2.status
index cb338fd..308d889 100644
--- a/tests/co19/co19-analyzer2.status
+++ b/tests/co19/co19-analyzer2.status
@@ -3,22 +3,12 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2analyzer ]
-# not clear: null..[1](1)[2](2).foo(3, bar: 4)=5 - it seems that verything before =5 it not assignable
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t15: fail
-
# invalid argument for constant constructor
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t02: fail
-# TBF: _f is private, so does not collide
-Language/07_Classes/1_Instance_Methods_A05_t08: fail
-
# TBD: should we check that argument for dynamic parameter of constant constructor is not compatible with operation that is performed with it?
Language/12_Expressions/01_Constants_A16_t03: fail
-# TBD: should we report _error_ when constant creation uses arguments with types incompatible with parameters?
-Language/12_Expressions/12_Instance_Creation/2_Const_A09_t02: fail
-Language/12_Expressions/12_Instance_Creation/2_Const_A09_t03: fail
-
# TBF: infinite look: class A {const A();final m = const A();}
Language/12_Expressions/01_Constants_A17_t03: fail
@@ -26,21 +16,48 @@
Language/15_Types/4_Interface_Types_A11_t01: Skip
Language/15_Types/4_Interface_Types_A11_t02: Skip
-# TBF: Hence, a static warning will not be issued if f has no declared return type, since the return type would be dynamic and dynamic may be assigned to void.
-Language/13_Statements/11_Return_A07_t01: fail
+# TBF: "class B1 = A with M1;", typedef cannot be used for mixins
+Language/09_Mixins/1_Mixin_Application_A01_t01: Fail
+
+# TBF: It is a compile-time error if the key of an entry in a constant map literal is an instance of a class that implements the operator == unless the key is a string or integer.
+Language/12_Expressions/07_Maps_A13_t01: Fail
+
+# TBF: malformed or malbounded type in "conts" is static warning
+Language/12_Expressions/12_Instance_Creation_A01_t08: Fail
+
+# TBF: typedef self reference
+Language/15_Types/3_Type_Declarations/1_Typedef_A07_t08: Fail
+Language/15_Types/3_Type_Declarations/1_Typedef_A07_t09: Fail
+
+
# co19 issue #442, undefined name "Expect"
Language/15_Types/4_Interface_Types_A08_t03: fail, OK
# co19 issue #455, undeclared identifier is static warning
Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t10: fail, OK
+Language/13_Statements/04_Local_Function_Declaration_A02_t02: fail, OK
Language/14_Libraries_and_Scripts/1_Imports_A02_t12: fail, OK
Language/14_Libraries_and_Scripts/1_Imports_A02_t15: fail, OK
+# co19 issue #513, rules for finals were loosened, contradiction in spec was fixed
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A21_t01: fail, OK
+
+# co19 issue #515, it is a compile-time error if there is more than one entity with the same name declared in the same scope
+Language/07_Classes/3_Setters_A08_t03: fail, OK
+
+# co19 issue #593: Conditional expressions are now allowed as constant expressions
+Language/12_Expressions/01_Constants_A15_t16: fail, OK
+
# co19 issue #438, Static variables are initialized lazily, need not be constants
Language/12_Expressions/01_Constants_A16_t01: fail, OK
Language/12_Expressions/01_Constants_A16_t02: fail, OK
+# co19 issue #420, "throw" requires expression, "rethrow" should be used instead
+Language/12_Expressions/08_Throw_A05_t01: fail, OK
+Language/12_Expressions/08_Throw_A05_t02: fail, OK
+Language/12_Expressions/08_Throw_A05_t03: fail, OK
+
# co19 issue #454 (wrongly closed)
Language/12_Expressions/12_Instance_Creation/1_New_A01_t04: fail, OK
@@ -63,47 +80,66 @@
Language/14_Libraries_and_Scripts/5_URIs_A01_t24: fail, OK
Language/14_Libraries_and_Scripts/5_URIs_A01_t25: fail, OK
-Language/09_Mixins/1_Mixin_Application_A01_t01: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/01_Constants_A22_t01: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/07_Maps_A13_t01: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/12_Instance_Creation_A01_t08: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/13_Property_Extraction_A02_t02: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/13_Property_Extraction_A04_t02: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/13_Property_Extraction_A04_t03: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t03: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t04: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t04: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t05: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/16_Getter_Lookup_A02_t05: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/16_Getter_Lookup_A02_t06: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/17_Getter_Invocation_A07_t01: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/17_Getter_Invocation_A07_t02: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/18_Assignment_A01_t07: Fail # co19-roll r607: Please triage this failure
-Language/12_Expressions/18_Assignment_A04_t09: Fail # co19-roll r607: Please triage this failure
-Language/13_Statements/02_Expression_Statements_A01_t13: Fail # co19-roll r607: Please triage this failure
-Language/15_Types/3_Type_Declarations/1_Typedef_A07_t08: Fail # co19-roll r607: Please triage this failure
-Language/15_Types/3_Type_Declarations/1_Typedef_A07_t09: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/HasNextIterator/HasNextIterator_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/LinkedList/LinkedList_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/LinkedList/first_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/collection/LinkedList/reduce_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isAccessor_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isAccessor_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isGetter_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isGetter_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isMethod_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isMethod_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isSetter_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/isSetter_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/memberName_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/namedArguments_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Invocation/positionalArguments_A01_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/RuneIterator/currentAsString_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/RuneIterator/current_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Runes/isEmpty_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Runes/isNotEmpty_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Runes/lastWhere_A02_t01: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Runes/length_A01_t02: Fail # co19-roll r607: Please triage this failure
-LibTest/core/Symbol/Symbol_A01_t04: Fail # co19-roll r607: Please triage this failure
+# co19 issue #609, return type of "factory M" is M, so we need static warning for "return;".
+Language/13_Statements/11_Return_A07_t01: fail, OK
+
+# co19 issue #613: @static-warning missing, only runtime behavior is tested
+Language/12_Expressions/13_Property_Extraction_A02_t02: Fail, OK
+Language/12_Expressions/13_Property_Extraction_A04_t02: Fail, OK
+Language/12_Expressions/13_Property_Extraction_A04_t03: Fail, OK
+Language/12_Expressions/17_Getter_Invocation_A07_t01: Fail, OK
+Language/12_Expressions/17_Getter_Invocation_A07_t02: Fail, OK
+Language/12_Expressions/18_Assignment_A01_t07: Fail, OK
+Language/12_Expressions/18_Assignment_A04_t09: Fail, OK
+LibTest/core/Invocation/isAccessor_A01_t01: Fail, OK
+LibTest/core/Invocation/isAccessor_A01_t02: Fail, OK
+LibTest/core/Invocation/isGetter_A01_t01: Fail, OK
+LibTest/core/Invocation/isGetter_A01_t02: Fail, OK
+LibTest/core/Invocation/isMethod_A01_t01: Fail, OK
+LibTest/core/Invocation/isMethod_A01_t02: Fail, OK
+LibTest/core/Invocation/isSetter_A01_t01: Fail, OK
+LibTest/core/Invocation/isSetter_A01_t02: Fail, OK
+LibTest/core/Invocation/memberName_A01_t01: Fail, OK
+LibTest/core/Invocation/namedArguments_A01_t01: Fail, OK
+LibTest/core/Invocation/positionalArguments_A01_t01: Fail, OK
+LibTest/core/Symbol/Symbol_A01_t04: Fail, OK
+
+# co19 issue #614: abstract class
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t03: Fail, OK
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t04: Fail, OK
+Language/12_Expressions/16_Getter_Lookup_A02_t05: Fail, OK
+Language/12_Expressions/16_Getter_Lookup_A02_t06: Fail, OK
+
+# co19 issue #615: Expect import missing
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t03: Fail, OK
+LibTest/collection/LinkedList/LinkedList_A01_t01: Fail, OK
+
+# co19 issue #616: X required argument(s) expected, but Y found
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t04: Fail, OK
+Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t05: Fail, OK
+
+# co19 issue #617: "hasNext" is not a function; "Expec"
+LibTest/collection/HasNextIterator/HasNextIterator_A01_t01: Fail, OK
+
+# co19 issue #618: Just a mess - mix of Map and Set
+LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: Fail, OK
+LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: Fail, OK
+LibTest/collection/LinkedList/first_A01_t02: Fail, OK
+
+# co19 issue #619: 1 required argument(s) expected, but 0 found
+LibTest/collection/LinkedList/reduce_A01_t01: Fail, OK
+
+# co19 issue #620: The name 'NoSuchMethoError' is not a type and cannot be used in an on-catch clause
+LibTest/core/RuneIterator/currentAsString_A01_t02: Fail, OK
+LibTest/core/RuneIterator/current_A01_t02: Fail, OK
+LibTest/core/Runes/length_A01_t02: Fail, OK
+
+# co19 issue #621: Undefined name 'runes'
+LibTest/core/Runes/isEmpty_A01_t02: Fail, OK
+LibTest/core/Runes/isNotEmpty_A01_t02: Fail, OK
+
+# co19 issue #622: Undefined class 'Int16List.fromList'
+LibTest/core/Runes/lastWhere_A02_t01: Fail, OK
+
+# co19 issue #623: main() { {}; } is block and empty statement, not a map
+Language/13_Statements/02_Expression_Statements_A01_t13: Fail, OK
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index 61892e6..5c1351e 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -90,6 +90,7 @@
int_parse_radix_test: fail
list_insert_test: fail
list_removeat_test: fail
+symbol_test/01: fail # test issue 13730; It is static type warning if "const" instance creation argument type is not compatible with parameter type
[ $arch == arm ]
collection_to_string_test: Pass, Crash # Issue: 11207
diff --git a/tests/language/language_analyzer2.status b/tests/language/language_analyzer2.status
index 1bb5a27..4ec55fd 100644
--- a/tests/language/language_analyzer2.status
+++ b/tests/language/language_analyzer2.status
@@ -3,18 +3,7 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2analyzer ]
-switch_bad_case_test/02: Fail
-
-# Missing compile-time errors for parameters marked static.
-static_parameter_test/02: Fail
-static_parameter_test/03: Fail
-static_parameter_test/04: Fail
-static_parameter_test/06: Fail
-static_parameter_test/07: Fail
-static_parameter_test/08: Fail
-static_parameter_test/10: Fail
-static_parameter_test/11: Fail
-static_parameter_test/12: Fail
+switch_bad_case_test/02: Fail # missing error in double in switch case expr
# Runtime negative test. No static errors or warnings.
closure_call_wrong_argument_count_negative_test: skip
diff --git a/tests/lib/analyzer/analyze_library.status b/tests/lib/analyzer/analyze_library.status
index 227e5c6..b8a685b 100644
--- a/tests/lib/analyzer/analyze_library.status
+++ b/tests/lib/analyzer/analyze_library.status
@@ -7,3 +7,5 @@
lib/core/core: fail
lib/typed_data/typed_data: fail
lib/io/io: fail
+lib/json/json: fail
+lib/utf/utf: fail
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 763dde2..569f747 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -194,11 +194,6 @@
mirrors/generics_test/none: Fail # Issue 13432
mirrors/invoke_named_test/none: Fail # http://dartbug.com/13612
-mirrors/parameter_metadata_test: Fail # Issue 13510
-mirrors/method_mirror_returntype_test: Fail # Issue 13510
-mirrors/function_type_mirror_test: Fail # Issue 13510
-mirrors/typevariable_mirror_metadata_test: Fail # Issue 13510
-
[ $compiler == none && $runtime == dartium ]
async/run_async3_test: Fail # Issue 13719: Please triage this failure.
async/run_async4_test: Fail # Issue 13719: Please triage this failure.
diff --git a/tools/VERSION b/tools/VERSION
index 2a11680..9f4c828 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
MAJOR 0
MINOR 8
BUILD 1
-PATCH 0
+PATCH 1