| OLD | NEW |
| 1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
| 2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
| 3 library engine.resolver_test; | 3 library engine.resolver_test; |
| 4 import 'package:analyzer_experimental/src/generated/java_core.dart'; | 4 import 'package:analyzer_experimental/src/generated/java_core.dart'; |
| 5 import 'package:analyzer_experimental/src/generated/java_junit.dart'; | 5 import 'package:analyzer_experimental/src/generated/java_junit.dart'; |
| 6 import 'package:analyzer_experimental/src/generated/source_io.dart'; | 6 import 'package:analyzer_experimental/src/generated/source_io.dart'; |
| 7 import 'package:analyzer_experimental/src/generated/error.dart'; | 7 import 'package:analyzer_experimental/src/generated/error.dart'; |
| 8 import 'package:analyzer_experimental/src/generated/scanner.dart'; | 8 import 'package:analyzer_experimental/src/generated/scanner.dart'; |
| 9 import 'package:analyzer_experimental/src/generated/ast.dart'; | 9 import 'package:analyzer_experimental/src/generated/ast.dart'; |
| 10 import 'package:analyzer_experimental/src/generated/parser.dart' show ParserErro
rCode; | 10 import 'package:analyzer_experimental/src/generated/parser.dart' show ParserErro
rCode; |
| (...skipping 5987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5998 runJUnitTest(__test, __test.test_visitTypeName_void); | 5998 runJUnitTest(__test, __test.test_visitTypeName_void); |
| 5999 }); | 5999 }); |
| 6000 }); | 6000 }); |
| 6001 } | 6001 } |
| 6002 } | 6002 } |
| 6003 class ResolverTestCase extends EngineTestCase { | 6003 class ResolverTestCase extends EngineTestCase { |
| 6004 | 6004 |
| 6005 /** | 6005 /** |
| 6006 * The source factory used to create [Source]. | 6006 * The source factory used to create [Source]. |
| 6007 */ | 6007 */ |
| 6008 SourceFactory _sourceFactory; | 6008 SourceFactory sourceFactory; |
| 6009 | 6009 |
| 6010 /** | 6010 /** |
| 6011 * The analysis context used to parse the compilation units being resolved. | 6011 * The analysis context used to parse the compilation units being resolved. |
| 6012 */ | 6012 */ |
| 6013 AnalysisContextImpl _analysisContext; | 6013 AnalysisContextImpl analysisContext; |
| 6014 void setUp() { | 6014 void setUp() { |
| 6015 reset(); | 6015 reset(); |
| 6016 } | 6016 } |
| 6017 | 6017 |
| 6018 /** | 6018 /** |
| 6019 * Add a source file to the content provider. | 6019 * Add a source file to the content provider. |
| 6020 * | 6020 * |
| 6021 * @param contents the contents to be returned by the content provider for the
specified file | 6021 * @param contents the contents to be returned by the content provider for the
specified file |
| 6022 * @return the source object representing the added file | 6022 * @return the source object representing the added file |
| 6023 */ | 6023 */ |
| 6024 Source addSource(String contents) => addSource2("/test.dart", contents); | 6024 Source addSource(String contents) => addSource2("/test.dart", contents); |
| 6025 | 6025 |
| 6026 /** | 6026 /** |
| 6027 * Add a source file to the content provider. The file path should be absolute
. | 6027 * Add a source file to the content provider. The file path should be absolute
. |
| 6028 * | 6028 * |
| 6029 * @param filePath the path of the file being added | 6029 * @param filePath the path of the file being added |
| 6030 * @param contents the contents to be returned by the content provider for the
specified file | 6030 * @param contents the contents to be returned by the content provider for the
specified file |
| 6031 * @return the source object representing the added file | 6031 * @return the source object representing the added file |
| 6032 */ | 6032 */ |
| 6033 Source addSource2(String filePath, String contents) { | 6033 Source addSource2(String filePath, String contents) { |
| 6034 Source source = cacheSource(filePath, contents); | 6034 Source source = cacheSource(filePath, contents); |
| 6035 ChangeSet changeSet = new ChangeSet(); | 6035 ChangeSet changeSet = new ChangeSet(); |
| 6036 changeSet.added(source); | 6036 changeSet.added(source); |
| 6037 _analysisContext.applyChanges(changeSet); | 6037 analysisContext.applyChanges(changeSet); |
| 6038 return source; | 6038 return source; |
| 6039 } | 6039 } |
| 6040 | 6040 |
| 6041 /** | 6041 /** |
| 6042 * Assert that the number of errors that have been gathered matches the number
of errors that are | 6042 * Assert that the number of errors that have been gathered matches the number
of errors that are |
| 6043 * given and that they have the expected error codes. The order in which the e
rrors were gathered | 6043 * given and that they have the expected error codes. The order in which the e
rrors were gathered |
| 6044 * is ignored. | 6044 * is ignored. |
| 6045 * | 6045 * |
| 6046 * @param expectedErrorCodes the error codes of the errors that should have be
en gathered | 6046 * @param expectedErrorCodes the error codes of the errors that should have be
en gathered |
| 6047 * @throws AssertionFailedError if a different number of errors have been gath
ered than were | 6047 * @throws AssertionFailedError if a different number of errors have been gath
ered than were |
| 6048 * expected | 6048 * expected |
| 6049 */ | 6049 */ |
| 6050 void assertErrors(List<ErrorCode> expectedErrorCodes) { | 6050 void assertErrors(List<ErrorCode> expectedErrorCodes) { |
| 6051 GatheringErrorListener errorListener = new GatheringErrorListener(); | 6051 GatheringErrorListener errorListener = new GatheringErrorListener(); |
| 6052 for (ChangeNotice notice in _analysisContext.performAnalysisTask()) { | 6052 for (ChangeNotice notice in analysisContext.performAnalysisTask()) { |
| 6053 for (AnalysisError error in notice.errors) { | 6053 for (AnalysisError error in notice.errors) { |
| 6054 errorListener.onError(error); | 6054 errorListener.onError(error); |
| 6055 } | 6055 } |
| 6056 } | 6056 } |
| 6057 errorListener.assertErrors2(expectedErrorCodes); | 6057 errorListener.assertErrors2(expectedErrorCodes); |
| 6058 } | 6058 } |
| 6059 | 6059 |
| 6060 /** | 6060 /** |
| 6061 * Assert that no errors have been gathered. | 6061 * Assert that no errors have been gathered. |
| 6062 * | 6062 * |
| 6063 * @throws AssertionFailedError if any errors have been gathered | 6063 * @throws AssertionFailedError if any errors have been gathered |
| 6064 */ | 6064 */ |
| 6065 void assertNoErrors() { | 6065 void assertNoErrors() { |
| 6066 GatheringErrorListener errorListener = new GatheringErrorListener(); | 6066 GatheringErrorListener errorListener = new GatheringErrorListener(); |
| 6067 for (ChangeNotice notice in _analysisContext.performAnalysisTask()) { | 6067 for (ChangeNotice notice in analysisContext.performAnalysisTask()) { |
| 6068 for (AnalysisError error in notice.errors) { | 6068 for (AnalysisError error in notice.errors) { |
| 6069 errorListener.onError(error); | 6069 errorListener.onError(error); |
| 6070 } | 6070 } |
| 6071 } | 6071 } |
| 6072 errorListener.assertNoErrors(); | 6072 errorListener.assertNoErrors(); |
| 6073 } | 6073 } |
| 6074 | 6074 |
| 6075 /** | 6075 /** |
| 6076 * Cache the source file content in the source factory but don't add the sourc
e to the analysis | 6076 * Cache the source file content in the source factory but don't add the sourc
e to the analysis |
| 6077 * context. The file path should be absolute. | 6077 * context. The file path should be absolute. |
| 6078 * | 6078 * |
| 6079 * @param filePath the path of the file being cached | 6079 * @param filePath the path of the file being cached |
| 6080 * @param contents the contents to be returned by the content provider for the
specified file | 6080 * @param contents the contents to be returned by the content provider for the
specified file |
| 6081 * @return the source object representing the cached file | 6081 * @return the source object representing the cached file |
| 6082 */ | 6082 */ |
| 6083 Source cacheSource(String filePath, String contents) { | 6083 Source cacheSource(String filePath, String contents) { |
| 6084 Source source = new FileBasedSource.con1(_sourceFactory.contentCache, FileUt
ilities2.createFile(filePath)); | 6084 Source source = new FileBasedSource.con1(sourceFactory.contentCache, FileUti
lities2.createFile(filePath)); |
| 6085 _sourceFactory.setContents(source, contents); | 6085 sourceFactory.setContents(source, contents); |
| 6086 return source; | 6086 return source; |
| 6087 } | 6087 } |
| 6088 | 6088 |
| 6089 /** | 6089 /** |
| 6090 * Create a library element that represents a library named `"test"` containin
g a single | 6090 * Create a library element that represents a library named `"test"` containin
g a single |
| 6091 * empty compilation unit. | 6091 * empty compilation unit. |
| 6092 * | 6092 * |
| 6093 * @return the library element that was created | 6093 * @return the library element that was created |
| 6094 */ | 6094 */ |
| 6095 LibraryElementImpl createTestLibrary() => createTestLibrary2(new AnalysisConte
xtImpl(), "test", []); | 6095 LibraryElementImpl createTestLibrary() => createTestLibrary2(new AnalysisConte
xtImpl(), "test", []); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 6114 sourcedCompilationUnits[i] = compilationUnit; | 6114 sourcedCompilationUnits[i] = compilationUnit; |
| 6115 } | 6115 } |
| 6116 String fileName = "${libraryName}.dart"; | 6116 String fileName = "${libraryName}.dart"; |
| 6117 CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImpl(
fileName); | 6117 CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImpl(
fileName); |
| 6118 compilationUnit.source = createSource2(fileName); | 6118 compilationUnit.source = createSource2(fileName); |
| 6119 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2([libraryName])); | 6119 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2([libraryName])); |
| 6120 library.definingCompilationUnit = compilationUnit; | 6120 library.definingCompilationUnit = compilationUnit; |
| 6121 library.parts = sourcedCompilationUnits; | 6121 library.parts = sourcedCompilationUnits; |
| 6122 return library; | 6122 return library; |
| 6123 } | 6123 } |
| 6124 AnalysisContext get analysisContext => _analysisContext; | |
| 6125 SourceFactory get sourceFactory => _sourceFactory; | |
| 6126 | 6124 |
| 6127 /** | 6125 /** |
| 6128 * Return a type provider that can be used to test the results of resolution. | 6126 * Return a type provider that can be used to test the results of resolution. |
| 6129 * | 6127 * |
| 6130 * @return a type provider | 6128 * @return a type provider |
| 6131 */ | 6129 */ |
| 6132 TypeProvider get typeProvider { | 6130 TypeProvider get typeProvider { |
| 6133 Source coreSource = _analysisContext.sourceFactory.forUri(DartSdk.DART_CORE)
; | 6131 Source coreSource = analysisContext.sourceFactory.forUri(DartSdk.DART_CORE); |
| 6134 LibraryElement coreElement = _analysisContext.getLibraryElement(coreSource); | 6132 LibraryElement coreElement = analysisContext.getLibraryElement(coreSource); |
| 6135 return new TypeProviderImpl(coreElement); | 6133 return new TypeProviderImpl(coreElement); |
| 6136 } | 6134 } |
| 6137 | 6135 |
| 6138 /** | 6136 /** |
| 6139 * In the rare cases we want to group several tests into single "test_" method
, so need a way to | 6137 * In the rare cases we want to group several tests into single "test_" method
, so need a way to |
| 6140 * reset test instance to reuse it. | 6138 * reset test instance to reuse it. |
| 6141 */ | 6139 */ |
| 6142 void reset() { | 6140 void reset() { |
| 6143 _analysisContext = AnalysisContextFactory.contextWithCore(); | 6141 analysisContext = AnalysisContextFactory.contextWithCore(); |
| 6144 _sourceFactory = _analysisContext.sourceFactory; | 6142 sourceFactory = analysisContext.sourceFactory; |
| 6145 } | 6143 } |
| 6146 | 6144 |
| 6147 /** | 6145 /** |
| 6148 * Given a library and all of its parts, resolve the contents of the library a
nd the contents of | 6146 * Given a library and all of its parts, resolve the contents of the library a
nd the contents of |
| 6149 * the parts. This assumes that the sources for the library and its parts have
already been added | 6147 * the parts. This assumes that the sources for the library and its parts have
already been added |
| 6150 * to the content provider using the method [addSource]. | 6148 * to the content provider using the method [addSource]. |
| 6151 * | 6149 * |
| 6152 * @param librarySource the source for the compilation unit that defines the l
ibrary | 6150 * @param librarySource the source for the compilation unit that defines the l
ibrary |
| 6153 * @return the element representing the resolved library | 6151 * @return the element representing the resolved library |
| 6154 * @throws AnalysisException if the analysis could not be performed | 6152 * @throws AnalysisException if the analysis could not be performed |
| 6155 */ | 6153 */ |
| 6156 LibraryElement resolve(Source librarySource) => _analysisContext.computeLibrar
yElement(librarySource); | 6154 LibraryElement resolve(Source librarySource) => analysisContext.computeLibrary
Element(librarySource); |
| 6157 | 6155 |
| 6158 /** | 6156 /** |
| 6159 * Return the resolved compilation unit corresponding to the given source in t
he given library. | 6157 * Return the resolved compilation unit corresponding to the given source in t
he given library. |
| 6160 * | 6158 * |
| 6161 * @param source the source of the compilation unit to be returned | 6159 * @param source the source of the compilation unit to be returned |
| 6162 * @param library the library in which the compilation unit is to be resolved | 6160 * @param library the library in which the compilation unit is to be resolved |
| 6163 * @return the resolved compilation unit | 6161 * @return the resolved compilation unit |
| 6164 * @throws Exception if the compilation unit could not be resolved | 6162 * @throws Exception if the compilation unit could not be resolved |
| 6165 */ | 6163 */ |
| 6166 CompilationUnit resolveCompilationUnit(Source source, LibraryElement library)
=> _analysisContext.resolveCompilationUnit(source, library); | 6164 CompilationUnit resolveCompilationUnit(Source source, LibraryElement library)
=> analysisContext.resolveCompilationUnit(source, library); |
| 6167 | 6165 |
| 6168 /** | 6166 /** |
| 6169 * Verify that all of the identifiers in the compilation units associated with
the given sources | 6167 * Verify that all of the identifiers in the compilation units associated with
the given sources |
| 6170 * have been resolved. | 6168 * have been resolved. |
| 6171 * | 6169 * |
| 6172 * @param resolvedElementMap a table mapping the AST nodes that have been reso
lved to the element | 6170 * @param resolvedElementMap a table mapping the AST nodes that have been reso
lved to the element |
| 6173 * to which they were resolved | 6171 * to which they were resolved |
| 6174 * @param sources the sources identifying the compilation units to be verified | 6172 * @param sources the sources identifying the compilation units to be verified |
| 6175 * @throws Exception if the contents of the compilation unit cannot be accesse
d | 6173 * @throws Exception if the contents of the compilation unit cannot be accesse
d |
| 6176 */ | 6174 */ |
| 6177 void verify(List<Source> sources) { | 6175 void verify(List<Source> sources) { |
| 6178 ResolutionVerifier verifier = new ResolutionVerifier(); | 6176 ResolutionVerifier verifier = new ResolutionVerifier(); |
| 6179 for (Source source in sources) { | 6177 for (Source source in sources) { |
| 6180 _analysisContext.parseCompilationUnit(source).accept(verifier); | 6178 analysisContext.parseCompilationUnit(source).accept(verifier); |
| 6181 } | 6179 } |
| 6182 verifier.assertResolved(); | 6180 verifier.assertResolved(); |
| 6183 } | 6181 } |
| 6184 | 6182 |
| 6185 /** | 6183 /** |
| 6186 * Create a source object representing a file with the given name and give it
an empty content. | 6184 * Create a source object representing a file with the given name and give it
an empty content. |
| 6187 * | 6185 * |
| 6188 * @param fileName the name of the file for which a source is to be created | 6186 * @param fileName the name of the file for which a source is to be created |
| 6189 * @return the source that was created | 6187 * @return the source that was created |
| 6190 */ | 6188 */ |
| 6191 FileBasedSource createSource2(String fileName) { | 6189 FileBasedSource createSource2(String fileName) { |
| 6192 FileBasedSource source = new FileBasedSource.con1(_sourceFactory.contentCach
e, FileUtilities2.createFile(fileName)); | 6190 FileBasedSource source = new FileBasedSource.con1(sourceFactory.contentCache
, FileUtilities2.createFile(fileName)); |
| 6193 _sourceFactory.setContents(source, ""); | 6191 sourceFactory.setContents(source, ""); |
| 6194 return source; | 6192 return source; |
| 6195 } | 6193 } |
| 6196 static dartSuite() { | 6194 static dartSuite() { |
| 6197 _ut.group('ResolverTestCase', () { | 6195 _ut.group('ResolverTestCase', () { |
| 6198 }); | 6196 }); |
| 6199 } | 6197 } |
| 6200 } | 6198 } |
| 6201 class TypeProviderImplTest extends EngineTestCase { | 6199 class TypeProviderImplTest extends EngineTestCase { |
| 6202 void test_creation() { | 6200 void test_creation() { |
| 6203 InterfaceType objectType = classElement("Object", null, []).type; | 6201 InterfaceType objectType = classElement("Object", null, []).type; |
| (...skipping 11476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17680 // ErrorResolverTest.dartSuite(); | 17678 // ErrorResolverTest.dartSuite(); |
| 17681 // HintCodeTest.dartSuite(); | 17679 // HintCodeTest.dartSuite(); |
| 17682 // NonHintCodeTest.dartSuite(); | 17680 // NonHintCodeTest.dartSuite(); |
| 17683 // NonErrorResolverTest.dartSuite(); | 17681 // NonErrorResolverTest.dartSuite(); |
| 17684 // SimpleResolverTest.dartSuite(); | 17682 // SimpleResolverTest.dartSuite(); |
| 17685 // StaticTypeWarningCodeTest.dartSuite(); | 17683 // StaticTypeWarningCodeTest.dartSuite(); |
| 17686 // StaticWarningCodeTest.dartSuite(); | 17684 // StaticWarningCodeTest.dartSuite(); |
| 17687 // StrictModeTest.dartSuite(); | 17685 // StrictModeTest.dartSuite(); |
| 17688 // TypePropagationTest.dartSuite(); | 17686 // TypePropagationTest.dartSuite(); |
| 17689 } | 17687 } |
| OLD | NEW |