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

Unified Diff: dart/tests/language/src/ImplicitThisTest.dart

Issue 8438032: Test implicit this on fields. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased and review comments Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dart/tests/language/language.status ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/tests/language/src/ImplicitThisTest.dart
diff --git a/dart/tests/language/src/ImplicitThisTest.dart b/dart/tests/language/src/ImplicitThisTest.dart
new file mode 100644
index 0000000000000000000000000000000000000000..7f8f4ff8849afced22d18d6f6016564145524632
--- /dev/null
+++ b/dart/tests/language/src/ImplicitThisTest.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+interface Interface {
+ final x;
+}
+
+// The abstract keyword is implicit if a class declares an abstract
+// member. This class does not declare any abstract members, so it
+// must be marked abstract because it doesn't implement the x getter.
+abstract class Abstract implements Interface {
+ String toString() => x.toString();
+}
+
+// This class does not implement "x" either, but it is not marked
+// abstract.
+class SubAbstract1 extends Abstract { } /// 01: static type error
+
+// This class is implicitly abstract as it declares an abstract getter
+// method.
+class SubAbstract2 extends Abstract {
+ abstract get x();
+}
+
+// This class does not implement "x" either, but it is not marked
+// abstract.
+class SubSubAbstract2 extends SubAbstract2 { } /// 04: static type error
+
+class Concrete extends Abstract {
+ get x() => 7;
+}
+
+class SubConcrete extends Concrete {
+ final x;
+ SubConcrete(this.x);
+}
+
+void main() {
+ var x = new Abstract(); /// 02: static type error
+ var y = new SubAbstract1(); /// 01: continued
+ var z = new SubAbstract2(); /// 03: static type error
+ var a = new SubSubAbstract2(); /// 04: continued
+ Expect.equals(x, x); /// 02: continued
+ Expect.equals('7', new Concrete().toString());
+ Expect.equals('42', new SubConcrete(42).toString());
+ Expect.equals('7', new SubConcrete(new Concrete()).toString());
+}
« no previous file with comments | « dart/tests/language/language.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698