Index: tests/compiler/dart2js/semantic_visitor_test_send_data.dart |
diff --git a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart |
index 87eecc3ee5170630d1cbd5f901d9e663a5dd1182..23460295bf30a62fa6f97d97aa62827d888d5ad2 100644 |
--- a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart |
+++ b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart |
@@ -3089,6 +3089,44 @@ const Map<String, List<Test>> SEND_TESTS = const { |
constant: 'const Class(true, 42)')), |
const Test( |
''' |
+ m() => const bool.fromEnvironment('foo'); |
+ ''', |
+ const Visit(VisitKind.VISIT_BOOL_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE, |
+ constant: |
+ 'const bool.fromEnvironment("foo", defaultValue: false)')), |
+ const Test( |
+ ''' |
+ m() => const bool.fromEnvironment('foo', defaultValue: true); |
+ ''', |
+ const Visit(VisitKind.VISIT_BOOL_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE, |
+ constant: 'const bool.fromEnvironment("foo", defaultValue: true)')), |
+ const Test( |
+ ''' |
+ m() => const int.fromEnvironment('foo'); |
+ ''', |
+ const Visit(VisitKind.VISIT_INT_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE, |
+ constant: 'const int.fromEnvironment("foo", defaultValue: null)')), |
+ const Test( |
+ ''' |
+ m() => const String.fromEnvironment('foo'); |
+ ''', |
+ const Visit(VisitKind.VISIT_STRING_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE, |
+ constant: |
+ 'const String.fromEnvironment("foo", defaultValue: null)')), |
+ const Test( |
+ ''' |
+ class Class { |
+ Class(a, b); |
+ } |
+ m() => const Class(true, 42); |
+ ''', |
+ const Visit(VisitKind.ERROR_NON_CONSTANT_CONSTRUCTOR_INVOKE, |
+ element: 'generative_constructor(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
class Class {} |
m() => new Class(); |
''', |
@@ -3123,6 +3161,16 @@ const Map<String, List<Test>> SEND_TESTS = const { |
selector: 'CallStructure(arity=2)')), |
const Test( |
''' |
+ class Class {} |
+ m() => new Class(true, 42); |
+ ''', |
+ const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE, |
+ element: 'generative_constructor(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
class Class { |
Class(a, b) : this._(a, b); |
Class._(a, b); |
@@ -3137,6 +3185,19 @@ const Map<String, List<Test>> SEND_TESTS = const { |
const Test( |
''' |
class Class { |
+ Class() : this._(true, 42); |
+ Class._(a, b); |
+ } |
+ m() => new Class(true, 42); |
+ ''', |
+ const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE, |
+ element: 'generative_constructor(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
+ class Class { |
factory Class(a, b) => new Class._(a, b); |
Class._(a, b); |
} |
@@ -3149,6 +3210,19 @@ const Map<String, List<Test>> SEND_TESTS = const { |
selector: 'CallStructure(arity=2)')), |
const Test( |
''' |
+ class Class { |
+ factory Class() => new Class._(true, 42); |
+ Class._(a, b); |
+ } |
+ m() => new Class(true, 42); |
+ ''', |
+ const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE, |
+ element: 'function(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
class Class<T> { |
factory Class(a, b) = Class<int>.a; |
factory Class.a(a, b) = Class<Class<T>>.b; |
@@ -3165,6 +3239,51 @@ const Map<String, List<Test>> SEND_TESTS = const { |
selector: 'CallStructure(arity=2)')), |
const Test( |
''' |
+ class Class<T> { |
+ factory Class(a) = Class<int>.a; |
+ factory Class.a(a, [b]) = Class<Class<T>>.b; |
+ Class.b(a, [b]); |
+ } |
+ m() => new Class<double>(true, 42); |
+ ''', |
+ const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, |
+ element: 'function(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class<double>', |
+ target: 'generative_constructor(Class#b)', |
+ targetType: 'Class<Class<int>>', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
+ class Class { |
+ factory Class() = Class._; |
+ Class._(); |
+ } |
+ m() => new Class(true, 42); |
+ ''', |
+ const Visit( |
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, |
+ element: 'function(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
+ class Class<T> { |
+ factory Class(a, b) = Class<int>.a; |
+ factory Class.a(a, b) = Class<Class<T>>.b; |
+ Class.b(a); |
+ } |
+ m() => new Class<double>(true, 42); |
+ ''', |
+ const Visit( |
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, |
+ element: 'function(Class#)', |
+ arguments: '(true,42)', |
+ type: 'Class<double>', |
+ selector: 'CallStructure(arity=2)')), |
+ const Test( |
+ ''' |
class Class { |
Class(a, b); |
} |