Skip to content

Commit 00b2e58

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[test] Fork mirrors tests.
Bug: #40045 Change-Id: I597259b38684de87016f1e136723d24f4ac05420 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132440 Reviewed-by: Ben Konyi <[email protected]> Commit-Queue: Ryan Macnak <[email protected]>
1 parent 0b06a36 commit 00b2e58

File tree

299 files changed

+16690
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

299 files changed

+16690
-0
lines changed

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ tests/lib_2/mirrors/method_mirror_source_line_ending_lf.dart -text
3030
tests/lib_2/mirrors/method_mirror_source_line_ending_test.dart -text
3131
tests/lib_2/mirrors/method_mirror_source_other.dart -text
3232
tests/lib_2/mirrors/method_mirror_source_test.dart -text
33+
tests/lib/mirrors/method_mirror_source_line_ending_cr.dart -text
34+
tests/lib/mirrors/method_mirror_source_line_ending_crlf.dart -text
35+
tests/lib/mirrors/method_mirror_source_line_ending_lf.dart -text
36+
tests/lib/mirrors/method_mirror_source_line_ending_test.dart -text
37+
tests/lib/mirrors/method_mirror_source_other.dart -text
38+
tests/lib/mirrors/method_mirror_source_test.dart -text
3339

3440
# Files to leave alone and not diff.
3541
*.png binary
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
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
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
library test.abstract_class_test;
6+
7+
import 'dart:mirrors';
8+
import 'package:expect/expect.dart';
9+
10+
void main() {
11+
testSimple();
12+
testFunctionType();
13+
testFakeFunction();
14+
testGeneric();
15+
testAnonMixinApplication();
16+
testNamedMixinApplication();
17+
}
18+
19+
abstract class Foo {
20+
foo();
21+
}
22+
23+
class Bar extends Foo {
24+
foo() {}
25+
}
26+
27+
testSimple() {
28+
Expect.isTrue(reflectClass(Foo).isAbstract);
29+
Expect.isFalse(reflectClass(Bar).isAbstract);
30+
Expect.isTrue(reflect(new Bar()).type.superclass.isAbstract);
31+
Expect.isFalse(reflect(new Bar()).type.isAbstract);
32+
}
33+
34+
void baz() {}
35+
36+
testFunctionType() {
37+
Expect.isFalse(reflect(baz).type.isAbstract);
38+
}
39+
40+
abstract class FunctionFoo implements Function {
41+
call();
42+
}
43+
44+
class FunctionBar extends FunctionFoo {
45+
call() {}
46+
}
47+
48+
testFakeFunction() {
49+
Expect.isTrue(reflectClass(FunctionFoo).isAbstract);
50+
Expect.isFalse(reflectClass(FunctionBar).isAbstract);
51+
Expect.isTrue(reflect(new FunctionBar()).type.superclass.isAbstract);
52+
Expect.isFalse(reflect(new FunctionBar()).type.isAbstract);
53+
}
54+
55+
abstract class GenericFoo<T> {
56+
T genericFoo();
57+
}
58+
59+
class GenericBar<T> extends GenericFoo<T> {
60+
T genericFoo() {}
61+
}
62+
63+
testGeneric() {
64+
// Unbound.
65+
Expect.isTrue(reflectClass(GenericFoo).isAbstract);
66+
Expect.isFalse(reflectClass(GenericBar).isAbstract);
67+
// Bound.
68+
Expect.isTrue(reflect(new GenericBar<int>()).type.superclass.isAbstract);
69+
Expect.isFalse(reflect(new GenericBar<int>()).type.isAbstract);
70+
}
71+
72+
class S {}
73+
74+
abstract class M {
75+
mixinFoo();
76+
}
77+
78+
abstract class MA extends S with M {}
79+
80+
class SubMA extends MA {
81+
mixinFoo() {}
82+
}
83+
84+
class ConcreteMA extends S with M {
85+
mixinFoo() {}
86+
}
87+
88+
class M2 {
89+
mixin2Foo() {}
90+
}
91+
92+
abstract class MA2 extends S with M2 {
93+
mixinBar();
94+
}
95+
96+
class SubMA2 extends MA2 {
97+
mixinBar() {}
98+
}
99+
100+
class ConcreteMA2 extends S with M2 {
101+
mixin2Foo() {}
102+
}
103+
104+
testAnonMixinApplication() {
105+
// Application is abstract.
106+
{
107+
// Mixin is abstract.
108+
Expect.isFalse(reflectClass(SubMA).isAbstract);
109+
Expect.isTrue(reflectClass(SubMA).superclass.isAbstract);
110+
Expect.isTrue(reflectClass(SubMA).superclass.superclass.isAbstract);
111+
Expect.isTrue(reflectClass(MA).isAbstract);
112+
Expect.isTrue(reflectClass(MA).superclass.isAbstract);
113+
114+
// Mixin is concrete.
115+
Expect.isFalse(reflectClass(SubMA2).isAbstract);
116+
Expect.isTrue(reflectClass(SubMA2).superclass.isAbstract);
117+
Expect.isTrue(reflectClass(SubMA2).superclass.superclass.isAbstract);
118+
Expect.isTrue(reflectClass(MA2).isAbstract);
119+
Expect.isTrue(reflectClass(MA2).superclass.isAbstract);
120+
}
121+
122+
// Application is concrete.
123+
{
124+
// Mixin is abstract.
125+
Expect.isFalse(reflectClass(ConcreteMA).isAbstract);
126+
Expect.isTrue(reflectClass(ConcreteMA).superclass.isAbstract);
127+
Expect.isFalse(reflectClass(ConcreteMA).superclass.superclass.isAbstract);
128+
129+
// Mixin is concrete.
130+
Expect.isFalse(reflectClass(ConcreteMA2).isAbstract);
131+
Expect.isTrue(reflectClass(ConcreteMA2).superclass.isAbstract);
132+
Expect.isFalse(reflectClass(ConcreteMA2).superclass.superclass.isAbstract);
133+
}
134+
}
135+
136+
abstract class NamedMA = S with M;
137+
138+
class SubNamedMA extends NamedMA {
139+
mixinFoo() {}
140+
}
141+
142+
abstract class NamedMA2 = S with M2;
143+
144+
class SubNamedMA2 extends NamedMA2 {
145+
mixinFoo() {}
146+
}
147+
148+
class ConcreteNamedMA2 = S with M2;
149+
150+
testNamedMixinApplication() {
151+
// Application is abstract.
152+
{
153+
// Mixin is abstract.
154+
Expect.isFalse(reflectClass(SubNamedMA).isAbstract);
155+
Expect.isTrue(reflectClass(SubNamedMA).superclass.isAbstract);
156+
Expect.isFalse(reflectClass(SubNamedMA).superclass.superclass.isAbstract);
157+
Expect.isTrue(reflectClass(NamedMA).isAbstract);
158+
Expect.isFalse(reflectClass(NamedMA).superclass.isAbstract);
159+
160+
// Mixin is concrete.
161+
Expect.isFalse(reflectClass(SubNamedMA2).isAbstract);
162+
Expect.isTrue(reflectClass(SubNamedMA2).superclass.isAbstract);
163+
Expect.isFalse(reflectClass(SubNamedMA2).superclass.superclass.isAbstract);
164+
Expect.isTrue(reflectClass(NamedMA2).isAbstract);
165+
Expect.isFalse(reflectClass(NamedMA2).superclass.isAbstract);
166+
}
167+
168+
// Application is concrete.
169+
{
170+
// Mixin is concrete.
171+
Expect.isFalse(reflectClass(ConcreteNamedMA2).isAbstract);
172+
Expect.isFalse(reflectClass(ConcreteNamedMA2).superclass.isAbstract);
173+
}
174+
}

tests/lib/mirrors/abstract_test.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
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.
4+
5+
// Test abstract classes are retained.
6+
7+
library test.abstract_test;
8+
9+
import 'dart:mirrors';
10+
11+
import 'stringify.dart';
12+
13+
abstract class Foo {}
14+
15+
void main() {
16+
expect(
17+
'Class(s(Foo) in s(test.abstract_test), top-level)', reflectClass(Foo));
18+
}

0 commit comments

Comments
 (0)