From 1274e083f55cbc6eec00a71407e724655e9efd17 Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Thu, 12 Jul 2012 09:22:53 +0000 Subject: [PATCH] Error produced for missing var, final, const or type on field declarations. BUG=2997 TEST=tests/language/field_decl_missing_var_type_test Review URL: https://chromiumcodereview.appspot.com//10690106 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9585 260f80e4-7a28-3924-810f-c04153c831b5 --- lib/compiler/implementation/scanner/listener.dart | 8 ++++++++ tests/co19/co19-leg.status | 1 - .../field_decl_missing_var_type_test.dart | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/language/field_decl_missing_var_type_test.dart diff --git a/lib/compiler/implementation/scanner/listener.dart b/lib/compiler/implementation/scanner/listener.dart index b116b7ea555..7d18d4d8ed3 100644 --- a/lib/compiler/implementation/scanner/listener.dart +++ b/lib/compiler/implementation/scanner/listener.dart @@ -1531,6 +1531,14 @@ class PartialFieldListElement extends VariableListElement { cachedNode = parse(listener, getCompilationUnit(), (p) => p.parseVariablesDeclaration(beginToken)); + if (!cachedNode.modifiers.isVar() && + !cachedNode.modifiers.isFinal() && + !cachedNode.modifiers.isConst() && + cachedNode.type === null) { + listener.cancel('A field declaration must start with var, final, ' + 'const, or a type annotation.', + cachedNode); + } return cachedNode; } diff --git a/tests/co19/co19-leg.status b/tests/co19/co19-leg.status index d57c3dfc709..5bbb29f1be1 100644 --- a/tests/co19/co19-leg.status +++ b/tests/co19/co19-leg.status @@ -520,7 +520,6 @@ Language/07_Classes/3_Setters_A04_t01: Fail, OK # @compile-error Language/07_Classes/3_Setters_A04_t02: Fail, OK # @compile-error Language/07_Classes/3_Setters_A04_t07: Fail, OK # @compile-error Language/07_Classes/3_Setters_A04_t08: Fail, OK # @compile-error -Language/07_Classes/5_Constructors/1_Generative_Constructors_A01_t02: Fail, OK # @compile-error Language/07_Classes/5_Constructors/1_Generative_Constructors_A01_t04: Fail, OK # @compile-error Language/07_Classes/5_Constructors/1_Generative_Constructors_A01_t05: Fail, OK # @compile-error Language/07_Classes/5_Constructors/1_Generative_Constructors_A03_t05: Fail, OK # @compile-error diff --git a/tests/language/field_decl_missing_var_type_test.dart b/tests/language/field_decl_missing_var_type_test.dart new file mode 100644 index 00000000000..c34ad316515 --- /dev/null +++ b/tests/language/field_decl_missing_var_type_test.dart @@ -0,0 +1,15 @@ +// 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. +// Dart test program for constructors and initializers. + +// Exercises issue 2997, missing var or type on field declarations should +// generate a compile-time error. + +class A { + _this; /// 01: compile-time error + A(x) : this._this = x; /// 01: continued +} +main() { + new A(0); /// 01: continued +}