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

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

Issue 1410493006: Compute propagated type for final instance fields (partially addresses issue 23001) (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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.resolver_test; 5 library engine.resolver_test;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/src/context/context.dart' as newContext; 9 import 'package:analyzer/src/context/context.dart' as newContext;
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 12685 matching lines...) Expand 10 before | Expand all | Expand 10 after
12696 } 12696 }
12697 12697
12698 void test_getType_noScope() { 12698 void test_getType_noScope() {
12699 TypeOverrideManager manager = new TypeOverrideManager(); 12699 TypeOverrideManager manager = new TypeOverrideManager();
12700 expect(manager.getType(ElementFactory.localVariableElement2("v")), isNull); 12700 expect(manager.getType(ElementFactory.localVariableElement2("v")), isNull);
12701 } 12701 }
12702 } 12702 }
12703 12703
12704 @reflectiveTest 12704 @reflectiveTest
12705 class TypePropagationTest extends ResolverTestCase { 12705 class TypePropagationTest extends ResolverTestCase {
12706 void fail_finalPropertyInducingVariable_classMember_instance() {
12707 addNamedSource(
12708 "/lib.dart",
12709 r'''
12710 class A {
12711 final v = 0;
12712 }''');
12713 String code = r'''
12714 import 'lib.dart';
12715 f(A a) {
12716 return a.v; // marker
12717 }''';
12718 _assertTypeOfMarkedExpression(
12719 code, typeProvider.dynamicType, typeProvider.intType);
12720 }
12721
12722 void fail_finalPropertyInducingVariable_classMember_instance_inherited() {
12723 addNamedSource(
12724 "/lib.dart",
12725 r'''
12726 class A {
12727 final v = 0;
12728 }''');
12729 String code = r'''
12730 import 'lib.dart';
12731 class B extends A {
12732 m() {
12733 return v; // marker
12734 }
12735 }''';
12736 _assertTypeOfMarkedExpression(
12737 code, typeProvider.dynamicType, typeProvider.intType);
12738 }
12739
12740 void fail_finalPropertyInducingVariable_classMember_instance_propagatedTarget( ) {
12741 addNamedSource(
12742 "/lib.dart",
12743 r'''
12744 class A {
12745 final v = 0;
12746 }''');
12747 String code = r'''
12748 import 'lib.dart';
12749 f(p) {
12750 if (p is A) {
12751 return p.v; // marker
12752 }
12753 }''';
12754 _assertTypeOfMarkedExpression(
12755 code, typeProvider.dynamicType, typeProvider.intType);
12756 }
12757
12758 void fail_finalPropertyInducingVariable_classMember_instance_unprefixed() {
12759 String code = r'''
12760 class A {
12761 final v = 0;
12762 m() {
12763 v; // marker
12764 }
12765 }''';
12766 _assertTypeOfMarkedExpression(
12767 code, typeProvider.dynamicType, typeProvider.intType);
12768 }
12769
12770 void fail_finalPropertyInducingVariable_classMember_static() { 12706 void fail_finalPropertyInducingVariable_classMember_static() {
12771 addNamedSource( 12707 addNamedSource(
12772 "/lib.dart", 12708 "/lib.dart",
12773 r''' 12709 r'''
12774 class A { 12710 class A {
12775 static final V = 0; 12711 static final V = 0;
12776 }'''); 12712 }''');
12777 String code = r''' 12713 String code = r'''
12778 import 'lib.dart'; 12714 import 'lib.dart';
12779 f() { 12715 f() {
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
13082 Source source = addSource(code); 13018 Source source = addSource(code);
13083 LibraryElement library = resolve2(source); 13019 LibraryElement library = resolve2(source);
13084 assertNoErrors(source); 13020 assertNoErrors(source);
13085 verify([source]); 13021 verify([source]);
13086 CompilationUnit unit = resolveCompilationUnit(source, library); 13022 CompilationUnit unit = resolveCompilationUnit(source, library);
13087 SimpleIdentifier identifier = EngineTestCase.findNode( 13023 SimpleIdentifier identifier = EngineTestCase.findNode(
13088 unit, code, "context", (node) => node is SimpleIdentifier); 13024 unit, code, "context", (node) => node is SimpleIdentifier);
13089 expect(identifier.propagatedType.name, "CanvasRenderingContext2D"); 13025 expect(identifier.propagatedType.name, "CanvasRenderingContext2D");
13090 } 13026 }
13091 13027
13028 void test_finalPropertyInducingVariable_classMember_instance() {
13029 addNamedSource(
13030 "/lib.dart",
13031 r'''
13032 class A {
13033 final v = 0;
13034 }''');
13035 String code = r'''
13036 import 'lib.dart';
13037 f(A a) {
13038 return a.v; // marker
13039 }''';
13040 _assertTypeOfMarkedExpression(
13041 code, typeProvider.dynamicType, typeProvider.intType);
13042 }
13043
13044 void test_finalPropertyInducingVariable_classMember_instance_inherited() {
13045 addNamedSource(
13046 "/lib.dart",
13047 r'''
13048 class A {
13049 final v = 0;
13050 }''');
13051 String code = r'''
13052 import 'lib.dart';
13053 class B extends A {
13054 m() {
13055 return v; // marker
13056 }
13057 }''';
13058 _assertTypeOfMarkedExpression(
13059 code, typeProvider.dynamicType, typeProvider.intType);
13060 }
13061
13062 void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget( ) {
13063 addNamedSource(
13064 "/lib.dart",
13065 r'''
13066 class A {
13067 final v = 0;
13068 }''');
13069 String code = r'''
13070 import 'lib.dart';
13071 f(p) {
13072 if (p is A) {
13073 return p.v; // marker
13074 }
13075 }''';
13076 _assertTypeOfMarkedExpression(
13077 code, typeProvider.dynamicType, typeProvider.intType);
13078 }
13079
13080 void test_finalPropertyInducingVariable_classMember_instance_unprefixed() {
13081 String code = r'''
13082 class A {
13083 final v = 0;
13084 m() {
13085 v; // marker
13086 }
13087 }''';
13088 _assertTypeOfMarkedExpression(
13089 code, typeProvider.dynamicType, typeProvider.intType);
13090 }
13091
13092 void test_forEach() { 13092 void test_forEach() {
13093 String code = r''' 13093 String code = r'''
13094 main() { 13094 main() {
13095 var list = <String> []; 13095 var list = <String> [];
13096 for (var e in list) { 13096 for (var e in list) {
13097 e; 13097 e;
13098 } 13098 }
13099 }'''; 13099 }''';
13100 Source source = addSource(code); 13100 Source source = addSource(code);
13101 LibraryElement library = resolve2(source); 13101 LibraryElement library = resolve2(source);
(...skipping 1960 matching lines...) Expand 10 before | Expand all | Expand 10 after
15062 15062
15063 void _resolveTestUnit(String code) { 15063 void _resolveTestUnit(String code) {
15064 testCode = code; 15064 testCode = code;
15065 testSource = addSource(testCode); 15065 testSource = addSource(testCode);
15066 LibraryElement library = resolve2(testSource); 15066 LibraryElement library = resolve2(testSource);
15067 assertNoErrors(testSource); 15067 assertNoErrors(testSource);
15068 verify([testSource]); 15068 verify([testSource]);
15069 testUnit = resolveCompilationUnit(testSource, library); 15069 testUnit = resolveCompilationUnit(testSource, library);
15070 } 15070 }
15071 } 15071 }
OLDNEW
« pkg/analyzer/lib/src/generated/resolver.dart ('K') | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698