| OLD | NEW | 
|     1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file |     1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file | 
|     2 // for details. All rights reserved. Use of this source code is governed by a |     2 // for details. All rights reserved. Use of this source code is governed by a | 
|     3 // BSD-style license that can be found in the LICENSE file. |     3 // BSD-style license that can be found in the LICENSE file. | 
|     4  |     4  | 
|     5 library analyzer.test.constant_test; |     5 library analyzer.test.constant_test; | 
|     6  |     6  | 
|     7 import 'dart:async'; |     7 import 'dart:async'; | 
|     8  |     8  | 
|     9 import 'package:analyzer/context/declared_variables.dart'; |     9 import 'package:analyzer/context/declared_variables.dart'; | 
|    10 import 'package:analyzer/dart/ast/ast.dart'; |    10 import 'package:analyzer/dart/ast/ast.dart'; | 
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   309     _validate(true, (members[0] as TopLevelVariableDeclaration).variables); |   309     _validate(true, (members[0] as TopLevelVariableDeclaration).variables); | 
|   310     _validate(true, (members[1] as TopLevelVariableDeclaration).variables); |   310     _validate(true, (members[1] as TopLevelVariableDeclaration).variables); | 
|   311   } |   311   } | 
|   312  |   312  | 
|   313   test_computeValues_empty() async { |   313   test_computeValues_empty() async { | 
|   314     ConstantValueComputer computer = _makeConstantValueComputer(); |   314     ConstantValueComputer computer = _makeConstantValueComputer(); | 
|   315     computer.computeValues(); |   315     computer.computeValues(); | 
|   316   } |   316   } | 
|   317  |   317  | 
|   318   test_computeValues_multipleSources() async { |   318   test_computeValues_multipleSources() async { | 
|   319     Source librarySource = addNamedSource( |   319     Source librarySource = addNamedSource("/lib.dart", r''' | 
|   320         "/lib.dart", |  | 
|   321         r''' |  | 
|   322 library lib; |   320 library lib; | 
|   323 part 'part.dart'; |   321 part 'part.dart'; | 
|   324 const int c = b; |   322 const int c = b; | 
|   325 const int a = 0;'''); |   323 const int a = 0;'''); | 
|   326     Source partSource = addNamedSource( |   324     Source partSource = addNamedSource("/part.dart", r''' | 
|   327         "/part.dart", |  | 
|   328         r''' |  | 
|   329 part of lib; |   325 part of lib; | 
|   330 const int b = a; |   326 const int b = a; | 
|   331 const int d = c;'''); |   327 const int d = c;'''); | 
|   332     LibraryElement libraryElement = resolve2(librarySource); |   328     LibraryElement libraryElement = resolve2(librarySource); | 
|   333     CompilationUnit libraryUnit = |   329     CompilationUnit libraryUnit = | 
|   334         analysisContext.resolveCompilationUnit(librarySource, libraryElement); |   330         analysisContext.resolveCompilationUnit(librarySource, libraryElement); | 
|   335     expect(libraryUnit, isNotNull); |   331     expect(libraryUnit, isNotNull); | 
|   336     CompilationUnit partUnit = |   332     CompilationUnit partUnit = | 
|   337         analysisContext.resolveCompilationUnit(partSource, libraryElement); |   333         analysisContext.resolveCompilationUnit(partSource, libraryElement); | 
|   338     expect(partUnit, isNotNull); |   334     expect(partUnit, isNotNull); | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   398 class A { |   394 class A { | 
|   399   const A(this.next); |   395   const A(this.next); | 
|   400   final A next; |   396   final A next; | 
|   401 } |   397 } | 
|   402 const A x = const A(null); |   398 const A x = const A(null); | 
|   403 const A y = const A(x);'''); |   399 const A y = const A(x);'''); | 
|   404   } |   400   } | 
|   405  |   401  | 
|   406   test_dependencyOnConstructorArgument_unresolvedConstructor() async { |   402   test_dependencyOnConstructorArgument_unresolvedConstructor() async { | 
|   407     // "const A.a(x)" depends on x even if the constructor A.a can't be found. |   403     // "const A.a(x)" depends on x even if the constructor A.a can't be found. | 
|   408     await _assertProperDependencies( |   404     await _assertProperDependencies(r''' | 
|   409         r''' |  | 
|   410 class A { |   405 class A { | 
|   411 } |   406 } | 
|   412 const int x = 1; |   407 const int x = 1; | 
|   413 const A y = const A.a(x);''', |   408 const A y = const A.a(x);''', | 
|   414         [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]); |   409         [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]); | 
|   415   } |   410   } | 
|   416  |   411  | 
|   417   test_dependencyOnConstructorInitializer() async { |   412   test_dependencyOnConstructorInitializer() async { | 
|   418     // "const A()" depends on x |   413     // "const A()" depends on x | 
|   419     await _assertProperDependencies(r''' |   414     await _assertProperDependencies(r''' | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   496   final int x = 1; |   491   final int x = 1; | 
|   497 } |   492 } | 
|   498 const A a = const A(); |   493 const A a = const A(); | 
|   499 '''); |   494 '''); | 
|   500   } |   495   } | 
|   501  |   496  | 
|   502   test_dependencyOnInitializedNonStaticConst() async { |   497   test_dependencyOnInitializedNonStaticConst() async { | 
|   503     // Even though non-static consts are not allowed by the language, we need |   498     // Even though non-static consts are not allowed by the language, we need | 
|   504     // to handle them for error recovery purposes. |   499     // to handle them for error recovery purposes. | 
|   505     // a depends on A() depends on A.x |   500     // a depends on A() depends on A.x | 
|   506     await _assertProperDependencies( |   501     await _assertProperDependencies(''' | 
|   507         ''' |  | 
|   508 class A { |   502 class A { | 
|   509   const A(); |   503   const A(); | 
|   510   const int x = 1; |   504   const int x = 1; | 
|   511 } |   505 } | 
|   512 const A a = const A(); |   506 const A a = const A(); | 
|   513 ''', |   507 ''', [CompileTimeErrorCode.CONST_INSTANCE_FIELD]); | 
|   514         [CompileTimeErrorCode.CONST_INSTANCE_FIELD]); |  | 
|   515   } |   508   } | 
|   516  |   509  | 
|   517   test_dependencyOnNonFactoryRedirect() async { |   510   test_dependencyOnNonFactoryRedirect() async { | 
|   518     // a depends on A.foo() depends on A.bar() |   511     // a depends on A.foo() depends on A.bar() | 
|   519     await _assertProperDependencies(r''' |   512     await _assertProperDependencies(r''' | 
|   520 const A a = const A.foo(); |   513 const A a = const A.foo(); | 
|   521 class A { |   514 class A { | 
|   522   const A.foo() : this.bar(); |   515   const A.foo() : this.bar(); | 
|   523   const A.bar(); |   516   const A.bar(); | 
|   524 }'''); |   517 }'''); | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|   544 class A { |   537 class A { | 
|   545   const A.foo() : this.bar(); |   538   const A.foo() : this.bar(); | 
|   546   const A.bar([x = b]) : y = x; |   539   const A.bar([x = b]) : y = x; | 
|   547   final int y; |   540   final int y; | 
|   548 }'''); |   541 }'''); | 
|   549   } |   542   } | 
|   550  |   543  | 
|   551   test_dependencyOnNonFactoryRedirect_toMissing() async { |   544   test_dependencyOnNonFactoryRedirect_toMissing() async { | 
|   552     // a depends on A.foo() which depends on nothing, since A.bar() is |   545     // a depends on A.foo() which depends on nothing, since A.bar() is | 
|   553     // missing. |   546     // missing. | 
|   554     await _assertProperDependencies( |   547     await _assertProperDependencies(r''' | 
|   555         r''' |  | 
|   556 const A a = const A.foo(); |   548 const A a = const A.foo(); | 
|   557 class A { |   549 class A { | 
|   558   const A.foo() : this.bar(); |   550   const A.foo() : this.bar(); | 
|   559 }''', |   551 }''', [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]); | 
|   560         [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]); |  | 
|   561   } |   552   } | 
|   562  |   553  | 
|   563   test_dependencyOnNonFactoryRedirect_toNonConst() async { |   554   test_dependencyOnNonFactoryRedirect_toNonConst() async { | 
|   564     // a depends on A.foo() which depends on nothing, since A.bar() is |   555     // a depends on A.foo() which depends on nothing, since A.bar() is | 
|   565     // non-const. |   556     // non-const. | 
|   566     await _assertProperDependencies(r''' |   557     await _assertProperDependencies(r''' | 
|   567 const A a = const A.foo(); |   558 const A a = const A.foo(); | 
|   568 class A { |   559 class A { | 
|   569   const A.foo() : this.bar(); |   560   const A.foo() : this.bar(); | 
|   570   A.bar(); |   561   A.bar(); | 
| (...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1702   } |  1693   } | 
|  1703 } |  1694 } | 
|  1704  |  1695  | 
|  1705 @reflectiveTest |  1696 @reflectiveTest | 
|  1706 class StrongConstantValueComputerTest extends ConstantValueComputerTest { |  1697 class StrongConstantValueComputerTest extends ConstantValueComputerTest { | 
|  1707   void setUp() { |  1698   void setUp() { | 
|  1708     super.setUp(); |  1699     super.setUp(); | 
|  1709     resetWith(options: new AnalysisOptionsImpl()..strongMode = true); |  1700     resetWith(options: new AnalysisOptionsImpl()..strongMode = true); | 
|  1710   } |  1701   } | 
|  1711 } |  1702 } | 
| OLD | NEW |