| Index: dart/tests/compiler/dart2js/deprecated_features_test.dart
|
| diff --git a/dart/tests/compiler/dart2js/deprecated_features_test.dart b/dart/tests/compiler/dart2js/deprecated_features_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..27d25bb7fbde3345670c099a1cd484a86f0cce4f
|
| --- /dev/null
|
| +++ b/dart/tests/compiler/dart2js/deprecated_features_test.dart
|
| @@ -0,0 +1,94 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +// Test that deprecated language features are diagnosed correctly.
|
| +
|
| +import '../../../sdk/lib/_internal/compiler/compiler.dart';
|
| +import 'dart:uri';
|
| +import '../../utils/dummy_compiler_test.dart' as dummy;
|
| +
|
| +main() {
|
| + StringBuffer messages = new StringBuffer();
|
| + void handler(Uri uri, int begin, int end, String message, Diagnostic kind) {
|
| + if (kind == Diagnostic.VERBOSE_INFO) return;
|
| + if (identical(kind.name, 'source map')) return;
|
| + if (uri == null) {
|
| + messages.add('$kind: $message\n');
|
| + } else {
|
| + Expect.equals('main:', '$uri');
|
| + messages.add('$begin<${TEST_SOURCE.substring(begin, end)}>:$kind: '
|
| + '$message\n');
|
| + }
|
| + }
|
| +
|
| + Future<String> provider(Uri uri) {
|
| + if (uri.scheme != "main") return dummy.provider(uri);
|
| + return (new Completer<String>()..complete(TEST_SOURCE)).future;
|
| + }
|
| +
|
| + String code = compile(new Uri.fromComponents(scheme: 'main'),
|
| + new Uri.fromComponents(scheme: 'lib', path: '/'),
|
| + new Uri.fromComponents(scheme: 'package', path: '/'),
|
| + provider, handler).value;
|
| + if (code == null) {
|
| + throw 'Compilation failed: ${messages}';
|
| + }
|
| + Expect.stringEquals(
|
| + // This string is comprised of lines of the following format:
|
| + //
|
| + // offset<source>:kind: message
|
| + //
|
| + // "offset" is the character offset from the beginning of TEST_SOURCE.
|
| + // "source" is the substring of TEST_SOURCE that the compiler is
|
| + // indicating as erroneous.
|
| + // "kind" is the result of calling toString on a [Diagnostic] object.
|
| + // "message" is the expected message as a [String]. This is a
|
| + // short-term solution and should eventually changed to include
|
| + // a symbolic reference to a MessageKind.
|
| + "0<#library('test');>:${deprecatedMessage('# tags')}\n"
|
| + "19<interface>:${deprecatedMessage('interface declarations')}\n"
|
| + "144<Fisk>:${deprecatedMessage('interface factories')}\n"
|
| +
|
| + // TODO(ahe): Should be <Fisk.hest>.
|
| + "164<Fisk>:${deprecatedMessage('interface factories')}\n"
|
| +
|
| + // TODO(ahe): Should be <bar>.
|
| + "90<Foo>:${deprecatedMessage('conflicting constructor')}\n"
|
| +
|
| + "110<bar>:info: This member conflicts with a constructor.\n"
|
| + "181<Dynamic>:${deprecatedMessage('Dynamic')}\n"
|
| + "202<()>:${deprecatedMessage('getter parameters')}\n",
|
| + messages.toString());
|
| +}
|
| +
|
| +deprecatedMessage(feature) {
|
| + return
|
| + "warning: Warning: deprecated language feature, $feature"
|
| + ", will be removed in a future Dart milestone.";
|
| +}
|
| +
|
| +const String TEST_SOURCE = """
|
| +#library('test');
|
| +
|
| +interface Fisk default Foo {
|
| + Fisk();
|
| + Fisk.hest();
|
| +}
|
| +
|
| +class Foo {
|
| + Foo.bar();
|
| + static bar() => new Foo.bar();
|
| + factory Fisk() {}
|
| + factory Fisk.hest() {}
|
| + Dynamic fisk;
|
| + get x() => null;
|
| +}
|
| +
|
| +main() {
|
| + var a = Foo.bar();
|
| + var b = new Foo.bar();
|
| + new Fisk();
|
| + new Fisk.hest();
|
| +}
|
| +""";
|
|
|