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

Side by Side Diff: tests/compiler/dart2js/semantic_visitor_test_send_data.dart

Issue 1417103002: Add ElementKind for factory constructors. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 2 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
« no previous file with comments | « tests/compiler/dart2js/semantic_visitor_test_decl_data.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 part of dart2js.semantics_visitor_test; 5 part of dart2js.semantics_visitor_test;
6 6
7 const Map<String, List<Test>> SEND_TESTS = const { 7 const Map<String, List<Test>> SEND_TESTS = const {
8 'Parameters': const [ 8 'Parameters': const [
9 // Parameters 9 // Parameters
10 const Test('m(o) => o;', 10 const Test('m(o) => o;',
(...skipping 3697 matching lines...) Expand 10 before | Expand all | Expand 10 after
3708 selector: 'CallStructure(arity=2)')), 3708 selector: 'CallStructure(arity=2)')),
3709 const Test( 3709 const Test(
3710 ''' 3710 '''
3711 class Class { 3711 class Class {
3712 factory Class(a, b) => new Class._(a, b); 3712 factory Class(a, b) => new Class._(a, b);
3713 Class._(a, b); 3713 Class._(a, b);
3714 } 3714 }
3715 m() => new Class(true, 42); 3715 m() => new Class(true, 42);
3716 ''', 3716 ''',
3717 const Visit(VisitKind.VISIT_FACTORY_CONSTRUCTOR_INVOKE, 3717 const Visit(VisitKind.VISIT_FACTORY_CONSTRUCTOR_INVOKE,
3718 element: 'function(Class#)', 3718 element: 'factory_constructor(Class#)',
3719 arguments: '(true,42)', 3719 arguments: '(true,42)',
3720 type: 'Class', 3720 type: 'Class',
3721 selector: 'CallStructure(arity=2)')), 3721 selector: 'CallStructure(arity=2)')),
3722 const Test( 3722 const Test(
3723 ''' 3723 '''
3724 class Class { 3724 class Class {
3725 factory Class() => new Class._(true, 42); 3725 factory Class() => new Class._(true, 42);
3726 Class._(a, b); 3726 Class._(a, b);
3727 } 3727 }
3728 m() => new Class(true, 42); 3728 m() => new Class(true, 42);
3729 ''', 3729 ''',
3730 const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE, 3730 const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE,
3731 element: 'function(Class#)', 3731 element: 'factory_constructor(Class#)',
3732 arguments: '(true,42)', 3732 arguments: '(true,42)',
3733 type: 'Class', 3733 type: 'Class',
3734 selector: 'CallStructure(arity=2)')), 3734 selector: 'CallStructure(arity=2)')),
3735 const Test( 3735 const Test(
3736 ''' 3736 '''
3737 class Class<T> { 3737 class Class<T> {
3738 factory Class(a, b) = Class<int>.a; 3738 factory Class(a, b) = Class<int>.a;
3739 factory Class.a(a, b) = Class<Class<T>>.b; 3739 factory Class.a(a, b) = Class<Class<T>>.b;
3740 Class.b(a, b); 3740 Class.b(a, b);
3741 } 3741 }
3742 m() => new Class<double>(true, 42); 3742 m() => new Class<double>(true, 42);
3743 ''', 3743 ''',
3744 const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3744 const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3745 element: 'function(Class#)', 3745 element: 'factory_constructor(Class#)',
3746 arguments: '(true,42)', 3746 arguments: '(true,42)',
3747 type: 'Class<double>', 3747 type: 'Class<double>',
3748 target: 'generative_constructor(Class#b)', 3748 target: 'generative_constructor(Class#b)',
3749 targetType: 'Class<Class<int>>', 3749 targetType: 'Class<Class<int>>',
3750 selector: 'CallStructure(arity=2)')), 3750 selector: 'CallStructure(arity=2)')),
3751 const Test( 3751 const Test(
3752 ''' 3752 '''
3753 class Class<T> { 3753 class Class<T> {
3754 factory Class(a) = Class<int>.a; 3754 factory Class(a) = Class<int>.a;
3755 factory Class.a(a, [b]) = Class<Class<T>>.b; 3755 factory Class.a(a, [b]) = Class<Class<T>>.b;
3756 Class.b(a, [b]); 3756 Class.b(a, [b]);
3757 } 3757 }
3758 m() => new Class<double>(true, 42); 3758 m() => new Class<double>(true, 42);
3759 ''', 3759 ''',
3760 const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3760 const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3761 element: 'function(Class#)', 3761 element: 'factory_constructor(Class#)',
3762 arguments: '(true,42)', 3762 arguments: '(true,42)',
3763 type: 'Class<double>', 3763 type: 'Class<double>',
3764 target: 'generative_constructor(Class#b)', 3764 target: 'generative_constructor(Class#b)',
3765 targetType: 'Class<Class<int>>', 3765 targetType: 'Class<Class<int>>',
3766 selector: 'CallStructure(arity=2)')), 3766 selector: 'CallStructure(arity=2)')),
3767 const Test( 3767 const Test(
3768 ''' 3768 '''
3769 class Class { 3769 class Class {
3770 factory Class() = Class._; 3770 factory Class() = Class._;
3771 Class._(); 3771 Class._();
3772 } 3772 }
3773 m() => new Class(true, 42); 3773 m() => new Class(true, 42);
3774 ''', 3774 ''',
3775 const Visit( 3775 const Visit(
3776 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3776 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3777 element: 'function(Class#)', 3777 element: 'factory_constructor(Class#)',
3778 arguments: '(true,42)', 3778 arguments: '(true,42)',
3779 type: 'Class', 3779 type: 'Class',
3780 selector: 'CallStructure(arity=2)')), 3780 selector: 'CallStructure(arity=2)')),
3781 const Test( 3781 const Test(
3782 ''' 3782 '''
3783 class Class<T> { 3783 class Class<T> {
3784 factory Class(a, b) = Class<int>.a; 3784 factory Class(a, b) = Class<int>.a;
3785 factory Class.a(a, b) = Class<Class<T>>.b; 3785 factory Class.a(a, b) = Class<Class<T>>.b;
3786 Class.b(a); 3786 Class.b(a);
3787 } 3787 }
3788 m() => new Class<double>(true, 42); 3788 m() => new Class<double>(true, 42);
3789 ''', 3789 ''',
3790 const Visit( 3790 const Visit(
3791 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3791 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3792 element: 'function(Class#)', 3792 element: 'factory_constructor(Class#)',
3793 arguments: '(true,42)', 3793 arguments: '(true,42)',
3794 type: 'Class<double>', 3794 type: 'Class<double>',
3795 selector: 'CallStructure(arity=2)')), 3795 selector: 'CallStructure(arity=2)')),
3796 const Test( 3796 const Test(
3797 ''' 3797 '''
3798 class Class { 3798 class Class {
3799 Class(a, b); 3799 Class(a, b);
3800 } 3800 }
3801 m() => new Class.unresolved(true, 42); 3801 m() => new Class.unresolved(true, 42);
3802 ''', 3802 ''',
(...skipping 20 matching lines...) Expand all
3823 selector: 'CallStructure(arity=0)')), 3823 selector: 'CallStructure(arity=0)')),
3824 const Test( 3824 const Test(
3825 ''' 3825 '''
3826 class Class { 3826 class Class {
3827 factory Class(a, b) = Unresolved; 3827 factory Class(a, b) = Unresolved;
3828 } 3828 }
3829 m() => new Class(true, 42); 3829 m() => new Class(true, 42);
3830 ''', 3830 ''',
3831 const Visit( 3831 const Visit(
3832 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3832 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3833 element: 'function(Class#)', 3833 element: 'factory_constructor(Class#)',
3834 arguments: '(true,42)', 3834 arguments: '(true,42)',
3835 type: 'Class', 3835 type: 'Class',
3836 selector: 'CallStructure(arity=2)')), 3836 selector: 'CallStructure(arity=2)')),
3837 const Test( 3837 const Test(
3838 ''' 3838 '''
3839 class Class { 3839 class Class {
3840 factory Class(a, b) = Class.named; 3840 factory Class(a, b) = Class.named;
3841 } 3841 }
3842 m() => new Class(true, 42); 3842 m() => new Class(true, 42);
3843 ''', 3843 ''',
3844 const Visit( 3844 const Visit(
3845 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3845 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3846 element: 'function(Class#)', 3846 element: 'factory_constructor(Class#)',
3847 arguments: '(true,42)', 3847 arguments: '(true,42)',
3848 type: 'Class', 3848 type: 'Class',
3849 selector: 'CallStructure(arity=2)')), 3849 selector: 'CallStructure(arity=2)')),
3850 const Test( 3850 const Test(
3851 ''' 3851 '''
3852 class Class { 3852 class Class {
3853 factory Class(a, b) = Class.named; 3853 factory Class(a, b) = Class.named;
3854 factory Class.named(a, b) = Class.unresolved; 3854 factory Class.named(a, b) = Class.unresolved;
3855 } 3855 }
3856 m() => new Class(true, 42); 3856 m() => new Class(true, 42);
3857 ''', 3857 ''',
3858 const Visit( 3858 const Visit(
3859 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3859 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3860 element: 'function(Class#)', 3860 element: 'factory_constructor(Class#)',
3861 arguments: '(true,42)', 3861 arguments: '(true,42)',
3862 type: 'Class', 3862 type: 'Class',
3863 selector: 'CallStructure(arity=2)')), 3863 selector: 'CallStructure(arity=2)')),
3864 const Test( 3864 const Test(
3865 ''' 3865 '''
3866 abstract class AbstractClass { 3866 abstract class AbstractClass {
3867 AbstractClass(a, b); 3867 AbstractClass(a, b);
3868 } 3868 }
3869 class Class { 3869 class Class {
3870 factory Class(a, b) = AbstractClass; 3870 factory Class(a, b) = AbstractClass;
3871 } 3871 }
3872 m() => new Class(true, 42); 3872 m() => new Class(true, 42);
3873 ''', 3873 ''',
3874 const Visit( 3874 const Visit(
3875 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE, 3875 VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
3876 element: 'function(Class#)', 3876 element: 'factory_constructor(Class#)',
3877 arguments: '(true,42)', 3877 arguments: '(true,42)',
3878 type: 'Class', 3878 type: 'Class',
3879 selector: 'CallStructure(arity=2)')), 3879 selector: 'CallStructure(arity=2)')),
3880 ], 3880 ],
3881 'If not null expressions': const [ 3881 'If not null expressions': const [
3882 const Test( 3882 const Test(
3883 ''' 3883 '''
3884 m(a) => a?.b; 3884 m(a) => a?.b;
3885 ''', 3885 ''',
3886 const [ 3886 const [
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
4451 element: 'field(a)', rhs: '42')), 4451 element: 'field(a)', rhs: '42')),
4452 4452
4453 const Test( 4453 const Test(
4454 ''' 4454 '''
4455 m() => unresolved ??= 42; 4455 m() => unresolved ??= 42;
4456 ''', 4456 ''',
4457 const Visit(VisitKind.VISIT_UNRESOLVED_SET_IF_NULL, 4457 const Visit(VisitKind.VISIT_UNRESOLVED_SET_IF_NULL,
4458 name: 'unresolved', rhs: '42')), 4458 name: 'unresolved', rhs: '42')),
4459 ], 4459 ],
4460 }; 4460 };
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/semantic_visitor_test_decl_data.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698