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

Side by Side Diff: pkg/analyzer/test/generated/compile_time_error_code_test.dart

Issue 1183723002: Explicitly compute library errors in tests. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 engine.compile_time_error_code_test; 5 library engine.compile_time_error_code_test;
6 6
7 import 'package:analyzer/src/generated/engine.dart'; 7 import 'package:analyzer/src/generated/engine.dart';
8 import 'package:analyzer/src/generated/error.dart'; 8 import 'package:analyzer/src/generated/error.dart';
9 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; 9 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
10 import 'package:analyzer/src/generated/source_io.dart'; 10 import 'package:analyzer/src/generated/source_io.dart';
11 import 'package:unittest/unittest.dart' as _ut; 11 import 'package:unittest/unittest.dart' as _ut;
12 12
13 import '../reflective_tests.dart'; 13 import '../reflective_tests.dart';
14 import 'resolver_test.dart'; 14 import 'resolver_test.dart';
15 15
16 main() { 16 main() {
17 _ut.groupSep = ' | '; 17 _ut.groupSep = ' | ';
18 runReflectiveTests(CompileTimeErrorCodeTest); 18 runReflectiveTests(CompileTimeErrorCodeTest);
19 } 19 }
20 20
21 @reflectiveTest 21 @reflectiveTest
22 class CompileTimeErrorCodeTest extends ResolverTestCase { 22 class CompileTimeErrorCodeTest extends ResolverTestCase {
23 /**
24 * Computes errors for the given [librarySource].
25 * This assumes that the given [librarySource] and its parts have already
26 * been added to the content provider using the method [addNamedSource].
27 */
28 void computeLibrarySourceErrors(Source librarySource) {
29 analysisContext.computeErrors(librarySource);
30 }
31
32 void fail_awaitInWrongContext_sync() { 23 void fail_awaitInWrongContext_sync() {
33 // This test requires better error recovery than we currently have. In 24 // This test requires better error recovery than we currently have. In
34 // particular, we need to be able to distinguish between an await expression 25 // particular, we need to be able to distinguish between an await expression
35 // in the wrong context, and the use of 'await' as an identifier. 26 // in the wrong context, and the use of 'await' as an identifier.
36 Source source = addSource(r''' 27 Source source = addSource(r'''
37 f(x) { 28 f(x) {
38 return await x; 29 return await x;
39 }'''); 30 }''');
40 computeLibrarySourceErrors(source); 31 computeLibrarySourceErrors(source);
41 assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]); 32 assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
(...skipping 4668 matching lines...) Expand 10 before | Expand all | Expand 10 after
4710 addNamedSource('/lib.dart', ''' 4701 addNamedSource('/lib.dart', '''
4711 library lib; 4702 library lib;
4712 g() {} 4703 g() {}
4713 '''); 4704 ''');
4714 Source source = addSource(''' 4705 Source source = addSource('''
4715 import 'lib.dart' as p; 4706 import 'lib.dart' as p;
4716 f() { 4707 f() {
4717 p?.g(); 4708 p?.g();
4718 } 4709 }
4719 '''); 4710 ''');
4720 resolve(source); 4711 computeLibrarySourceErrors(source);
4721 assertErrors( 4712 assertErrors(
4722 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4713 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4723 verify([source]); 4714 verify([source]);
4724 } 4715 }
4725 4716
4726 void test_prefix_conditionalPropertyAccess_call_loadLibrary() { 4717 void test_prefix_conditionalPropertyAccess_call_loadLibrary() {
4727 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4718 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4728 options.enableNullAwareOperators = true; 4719 options.enableNullAwareOperators = true;
4729 resetWithOptions(options); 4720 resetWithOptions(options);
4730 addNamedSource('/lib.dart', ''' 4721 addNamedSource('/lib.dart', '''
4731 library lib; 4722 library lib;
4732 '''); 4723 ''');
4733 Source source = addSource(''' 4724 Source source = addSource('''
4734 import 'lib.dart' deferred as p; 4725 import 'lib.dart' deferred as p;
4735 f() { 4726 f() {
4736 p?.loadLibrary(); 4727 p?.loadLibrary();
4737 } 4728 }
4738 '''); 4729 ''');
4739 resolve(source); 4730 computeLibrarySourceErrors(source);
4740 assertErrors( 4731 assertErrors(
4741 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4732 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4742 verify([source]); 4733 verify([source]);
4743 } 4734 }
4744 4735
4745 void test_prefix_conditionalPropertyAccess_get() { 4736 void test_prefix_conditionalPropertyAccess_get() {
4746 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4737 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4747 options.enableNullAwareOperators = true; 4738 options.enableNullAwareOperators = true;
4748 resetWithOptions(options); 4739 resetWithOptions(options);
4749 addNamedSource('/lib.dart', ''' 4740 addNamedSource('/lib.dart', '''
4750 library lib; 4741 library lib;
4751 var x; 4742 var x;
4752 '''); 4743 ''');
4753 Source source = addSource(''' 4744 Source source = addSource('''
4754 import 'lib.dart' as p; 4745 import 'lib.dart' as p;
4755 f() { 4746 f() {
4756 return p?.x; 4747 return p?.x;
4757 } 4748 }
4758 '''); 4749 ''');
4759 resolve(source); 4750 computeLibrarySourceErrors(source);
4760 assertErrors( 4751 assertErrors(
4761 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4752 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4762 verify([source]); 4753 verify([source]);
4763 } 4754 }
4764 4755
4765 void test_prefix_conditionalPropertyAccess_get_loadLibrary() { 4756 void test_prefix_conditionalPropertyAccess_get_loadLibrary() {
4766 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4757 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4767 options.enableNullAwareOperators = true; 4758 options.enableNullAwareOperators = true;
4768 resetWithOptions(options); 4759 resetWithOptions(options);
4769 addNamedSource('/lib.dart', ''' 4760 addNamedSource('/lib.dart', '''
4770 library lib; 4761 library lib;
4771 '''); 4762 ''');
4772 Source source = addSource(''' 4763 Source source = addSource('''
4773 import 'lib.dart' deferred as p; 4764 import 'lib.dart' deferred as p;
4774 f() { 4765 f() {
4775 return p?.loadLibrary; 4766 return p?.loadLibrary;
4776 } 4767 }
4777 '''); 4768 ''');
4778 resolve(source); 4769 computeLibrarySourceErrors(source);
4779 assertErrors( 4770 assertErrors(
4780 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4771 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4781 verify([source]); 4772 verify([source]);
4782 } 4773 }
4783 4774
4784 void test_prefix_conditionalPropertyAccess_set() { 4775 void test_prefix_conditionalPropertyAccess_set() {
4785 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4776 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4786 options.enableNullAwareOperators = true; 4777 options.enableNullAwareOperators = true;
4787 resetWithOptions(options); 4778 resetWithOptions(options);
4788 addNamedSource('/lib.dart', ''' 4779 addNamedSource('/lib.dart', '''
4789 library lib; 4780 library lib;
4790 var x; 4781 var x;
4791 '''); 4782 ''');
4792 Source source = addSource(''' 4783 Source source = addSource('''
4793 import 'lib.dart' as p; 4784 import 'lib.dart' as p;
4794 f() { 4785 f() {
4795 p?.x = null; 4786 p?.x = null;
4796 } 4787 }
4797 '''); 4788 ''');
4798 resolve(source); 4789 computeLibrarySourceErrors(source);
4799 assertErrors( 4790 assertErrors(
4800 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4791 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4801 verify([source]); 4792 verify([source]);
4802 } 4793 }
4803 4794
4804 void test_prefix_conditionalPropertyAccess_set_loadLibrary() { 4795 void test_prefix_conditionalPropertyAccess_set_loadLibrary() {
4805 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4796 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4806 options.enableNullAwareOperators = true; 4797 options.enableNullAwareOperators = true;
4807 resetWithOptions(options); 4798 resetWithOptions(options);
4808 addNamedSource('/lib.dart', ''' 4799 addNamedSource('/lib.dart', '''
4809 library lib; 4800 library lib;
4810 '''); 4801 ''');
4811 Source source = addSource(''' 4802 Source source = addSource('''
4812 import 'lib.dart' deferred as p; 4803 import 'lib.dart' deferred as p;
4813 f() { 4804 f() {
4814 p?.loadLibrary = null; 4805 p?.loadLibrary = null;
4815 } 4806 }
4816 '''); 4807 ''');
4817 resolve(source); 4808 computeLibrarySourceErrors(source);
4818 assertErrors( 4809 assertErrors(
4819 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4810 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4820 verify([source]); 4811 verify([source]);
4821 } 4812 }
4822 4813
4823 void test_prefixCollidesWithTopLevelMembers_functionTypeAlias() { 4814 void test_prefixCollidesWithTopLevelMembers_functionTypeAlias() {
4824 addNamedSource("/lib.dart", r''' 4815 addNamedSource("/lib.dart", r'''
4825 library lib; 4816 library lib;
4826 class A{}'''); 4817 class A{}''');
4827 Source source = addSource(r''' 4818 Source source = addSource(r'''
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4877 } 4868 }
4878 4869
4879 void test_prefixNotFollowedByDot() { 4870 void test_prefixNotFollowedByDot() {
4880 addNamedSource('/lib.dart', 'library lib;'); 4871 addNamedSource('/lib.dart', 'library lib;');
4881 Source source = addSource(''' 4872 Source source = addSource('''
4882 import 'lib.dart' as p; 4873 import 'lib.dart' as p;
4883 f() { 4874 f() {
4884 return p; 4875 return p;
4885 } 4876 }
4886 '''); 4877 ''');
4887 resolve(source); 4878 computeLibrarySourceErrors(source);
4888 assertErrors( 4879 assertErrors(
4889 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4880 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4890 verify([source]); 4881 verify([source]);
4891 } 4882 }
4892 4883
4893 void test_prefixNotFollowedByDot_compoundAssignment() { 4884 void test_prefixNotFollowedByDot_compoundAssignment() {
4894 addNamedSource('/lib.dart', 'library lib;'); 4885 addNamedSource('/lib.dart', 'library lib;');
4895 Source source = addSource(''' 4886 Source source = addSource('''
4896 import 'lib.dart' as p; 4887 import 'lib.dart' as p;
4897 f() { 4888 f() {
4898 p += 1; 4889 p += 1;
4899 } 4890 }
4900 '''); 4891 ''');
4901 resolve(source); 4892 computeLibrarySourceErrors(source);
4902 assertErrors( 4893 assertErrors(
4903 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4894 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4904 verify([source]); 4895 verify([source]);
4905 } 4896 }
4906 4897
4907 void test_prefixNotFollowedByDot_conditionalMethodInvocation() { 4898 void test_prefixNotFollowedByDot_conditionalMethodInvocation() {
4908 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 4899 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4909 options.enableNullAwareOperators = true; 4900 options.enableNullAwareOperators = true;
4910 resetWithOptions(options); 4901 resetWithOptions(options);
4911 addNamedSource('/lib.dart', ''' 4902 addNamedSource('/lib.dart', '''
4912 library lib; 4903 library lib;
4913 g() {} 4904 g() {}
4914 '''); 4905 ''');
4915 Source source = addSource(''' 4906 Source source = addSource('''
4916 import 'lib.dart' as p; 4907 import 'lib.dart' as p;
4917 f() { 4908 f() {
4918 p?.g(); 4909 p?.g();
4919 } 4910 }
4920 '''); 4911 ''');
4921 resolve(source); 4912 computeLibrarySourceErrors(source);
4922 assertErrors( 4913 assertErrors(
4923 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]); 4914 source, [CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT]);
4924 verify([source]); 4915 verify([source]);
4925 } 4916 }
4926 4917
4927 void test_privateOptionalParameter() { 4918 void test_privateOptionalParameter() {
4928 Source source = addSource("f({var _p}) {}"); 4919 Source source = addSource("f({var _p}) {}");
4929 computeLibrarySourceErrors(source); 4920 computeLibrarySourceErrors(source);
4930 assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]); 4921 assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]);
4931 verify([source]); 4922 verify([source]);
(...skipping 1110 matching lines...) Expand 10 before | Expand all | Expand 10 after
6042 source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR]); 6033 source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR]);
6043 verify([source]); 6034 verify([source]);
6044 reset(); 6035 reset();
6045 } 6036 }
6046 6037
6047 void _check_wrongNumberOfParametersForOperator1(String name) { 6038 void _check_wrongNumberOfParametersForOperator1(String name) {
6048 _check_wrongNumberOfParametersForOperator(name, ""); 6039 _check_wrongNumberOfParametersForOperator(name, "");
6049 _check_wrongNumberOfParametersForOperator(name, "a, b"); 6040 _check_wrongNumberOfParametersForOperator(name, "a, b");
6050 } 6041 }
6051 } 6042 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/all_the_rest_test.dart ('k') | pkg/analyzer/test/generated/incremental_resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698