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

Unified Diff: runtime/vm/parser.cc

Issue 2607173002: - report tear offs using the x#y syntax as a compilation error (Closed)
Patch Set: run formatter. Created 4 years 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 | « runtime/vm/isolate_reload_test.cc ('k') | tests/co19/co19-dartium.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 5964c1104ab946c366a9e9f78dafbc4f9ee79bdf..c8d2aa1a51760d28959424faff94ec01121e017d 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -44,7 +44,10 @@ namespace dart {
DEFINE_FLAG(bool, enable_debug_break, false, "Allow use of break \"message\".");
DEFINE_FLAG(bool, trace_parser, false, "Trace parser operations.");
-DEFINE_FLAG(bool, warn_new_tearoff_syntax, true, "Warning on new tear off.");
+DEFINE_FLAG(bool,
+ support_deprecated_tearoff_syntax,
+ false,
+ "Support new tear-off syntax.");
// TODO(floitsch): remove the conditional-directive flag, once we publicly
// committed to the current version.
DEFINE_FLAG(bool,
@@ -11704,10 +11707,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
// Closurization e#m of getter, setter, method or operator.
AstNode* Parser::ParseClosurization(AstNode* primary) {
- if (FLAG_warn_new_tearoff_syntax) {
- ReportWarning(
- "Tear-offs using the x#id syntax is a deprecated feature,"
- "it will not be supported in the next release");
+ if (!FLAG_support_deprecated_tearoff_syntax) {
+ ReportError("tear-off using the x#id syntax is a deprecated feature");
+ return NULL;
}
ExpectToken(Token::kHASH);
TokenPosition property_pos = TokenPos();
@@ -11749,7 +11751,7 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
// a prefix, the name mangling does not help in hiding the private
// name, so we explicitly prevent lookup of private names here.
if (is_setter_name) {
- String& setter_name =
+ const String& setter_name =
String::Handle(Z, Field::SetterName(extractor_name));
obj = prefix.LookupObject(setter_name);
}
@@ -11772,11 +11774,13 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
} else if (obj.IsField()) {
const Field& field = Field::Cast(obj);
if (is_setter_name && !field.is_final()) {
- Instance& setter_closure = Instance::ZoneHandle(field.SetterClosure());
+ const Instance& setter_closure =
+ Instance::ZoneHandle(field.SetterClosure());
return new (Z) LiteralNode(property_pos, setter_closure);
}
if (!is_setter_name) {
- Instance& getter_closure = Instance::ZoneHandle(field.GetterClosure());
+ const Instance& getter_closure =
+ Instance::ZoneHandle(field.GetterClosure());
return new (Z) LiteralNode(property_pos, getter_closure);
}
}
@@ -13348,10 +13352,9 @@ void Parser::ParseConstructorClosurization(Function* constructor,
// type that is loaded.
ASSERT(prefix.IsNull() || prefix.is_loaded());
ASSERT(!type.IsMalformed() && !type.IsTypeParameter());
- if (FLAG_warn_new_tearoff_syntax) {
- ReportWarning(
- "Tear-offs using the x#id syntax is a deprecated feature,"
- "it will not be supported in the next release");
+ if (!FLAG_support_deprecated_tearoff_syntax) {
+ ReportError("tear-off using the x#id syntax is a deprecated feature");
+ return;
}
ExpectToken(Token::kHASH);
String* named_constructor = NULL;
@@ -13448,14 +13451,12 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
String* named_constructor = NULL;
const bool is_tearoff_expression = (CurrentToken() == Token::kHASH);
if (is_tearoff_expression) {
+ if (!FLAG_support_deprecated_tearoff_syntax) {
+ ReportError("tear-off using the x#id syntax is a deprecated feature");
+ }
if (is_const) {
ReportError("tear-off closure not allowed with const allocation");
}
- if (FLAG_warn_new_tearoff_syntax) {
- ReportWarning(
- "Tear-offs using the x#id syntax is a deprecated feature,"
- "and will not be supported in the next release");
- }
ConsumeToken();
if (IsIdentifier()) {
named_constructor = ExpectIdentifier("name of constructor expected");
@@ -13893,10 +13894,8 @@ AstNode* Parser::ParsePrimary() {
const LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(Z, ParsePrefix());
if (!prefix.IsNull()) {
if (CurrentToken() == Token::kHASH) {
- if (FLAG_warn_new_tearoff_syntax) {
- ReportWarning(
- "Tear-offs using the x#id syntax is a deprecated feature,"
- "it will not be supported in the next release");
+ if (!FLAG_support_deprecated_tearoff_syntax) {
+ ReportError("tear-off using the x#id syntax is a deprecated feature");
}
// Closurization of top-level entity in prefix scope.
return new (Z) LiteralNode(qual_ident_pos, prefix);
« no previous file with comments | « runtime/vm/isolate_reload_test.cc ('k') | tests/co19/co19-dartium.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698