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

Unified Diff: tests/compiler/dart2js/semantic_visitor_test_send_data.dart

Issue 1161823004: Handle .fromEnvironment and incompatible constructor invocations (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Change handling of incompatible redirecting factories. Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698