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

Side by Side Diff: pkg/front_end/lib/src/fasta/source/outline_builder.dart

Issue 2970273004: Deprecate all diagnostics methods that use strings. (Closed)
Patch Set: Merged with 4df146dd9a465d63344330bf3e45524b927c92ec Created 3 years, 5 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.outline_builder; 5 library fasta.outline_builder;
6 6
7 import 'package:kernel/ast.dart' show ProcedureKind; 7 import 'package:kernel/ast.dart' show ProcedureKind;
8 8
9 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; 9 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip;
10 10
11 import '../parser/parser.dart' show FormalParameterType, MemberKind, optional; 11 import '../parser/parser.dart' show FormalParameterType, MemberKind, optional;
12 12
13 import '../parser/identifier_context.dart' show IdentifierContext; 13 import '../parser/identifier_context.dart' show IdentifierContext;
14 14
15 import '../../scanner/token.dart' show Token; 15 import '../../scanner/token.dart' show Token;
16 16
17 import '../util/link.dart' show Link; 17 import '../util/link.dart' show Link;
18 18
19 import '../combinator.dart' show Combinator; 19 import '../combinator.dart' show Combinator;
20 20
21 import '../errors.dart' show internalError; 21 import '../deprecated_problems.dart' show deprecated_internalProblem;
22 22
23 import '../builder/builder.dart'; 23 import '../builder/builder.dart';
24 24
25 import '../modifier.dart' show abstractMask, externalMask, Modifier; 25 import '../modifier.dart' show abstractMask, externalMask, Modifier;
26 26
27 import 'source_library_builder.dart' show SourceLibraryBuilder; 27 import 'source_library_builder.dart' show SourceLibraryBuilder;
28 28
29 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener; 29 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener;
30 30
31 import '../parser/native_support.dart' 31 import '../parser/native_support.dart'
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 } 199 }
200 200
201 @override 201 @override
202 void endLiteralString(int interpolationCount, Token endToken) { 202 void endLiteralString(int interpolationCount, Token endToken) {
203 debugEvent("endLiteralString"); 203 debugEvent("endLiteralString");
204 if (interpolationCount == 0) { 204 if (interpolationCount == 0) {
205 Token token = pop(); 205 Token token = pop();
206 push(unescapeString(token.lexeme)); 206 push(unescapeString(token.lexeme));
207 push(token.charOffset); 207 push(token.charOffset);
208 } else { 208 } else {
209 internalError("String interpolation not implemented."); 209 deprecated_internalProblem("String interpolation not implemented.");
210 } 210 }
211 } 211 }
212 212
213 @override 213 @override
214 void handleStringJuxtaposition(int literalCount) { 214 void handleStringJuxtaposition(int literalCount) {
215 debugEvent("StringJuxtaposition"); 215 debugEvent("StringJuxtaposition");
216 List<String> list = 216 List<String> list =
217 new List<String>.filled(literalCount, null, growable: false); 217 new List<String>.filled(literalCount, null, growable: false);
218 int charOffset = -1; 218 int charOffset = -1;
219 for (int i = literalCount - 1; i >= 0; i--) { 219 for (int i = literalCount - 1; i >= 0; i--) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 List<MetadataBuilder> metadata = pop(); 288 List<MetadataBuilder> metadata = pop();
289 library.addClass(metadata, modifiers, name, typeVariables, supertype, 289 library.addClass(metadata, modifiers, name, typeVariables, supertype,
290 interfaces, charOffset); 290 interfaces, charOffset);
291 checkEmpty(beginToken.charOffset); 291 checkEmpty(beginToken.charOffset);
292 } 292 }
293 293
294 ProcedureKind computeProcedureKind(Token token) { 294 ProcedureKind computeProcedureKind(Token token) {
295 if (token == null) return ProcedureKind.Method; 295 if (token == null) return ProcedureKind.Method;
296 if (optional("get", token)) return ProcedureKind.Getter; 296 if (optional("get", token)) return ProcedureKind.Getter;
297 if (optional("set", token)) return ProcedureKind.Setter; 297 if (optional("set", token)) return ProcedureKind.Setter;
298 return internalError("Unhandled: ${token.lexeme}"); 298 return deprecated_internalProblem("Unhandled: ${token.lexeme}");
299 } 299 }
300 300
301 @override 301 @override
302 void beginTopLevelMethod(Token token, Token name) { 302 void beginTopLevelMethod(Token token, Token name) {
303 library.beginNestedDeclaration(name.lexeme, hasMembers: false); 303 library.beginNestedDeclaration(name.lexeme, hasMembers: false);
304 } 304 }
305 305
306 @override 306 @override
307 void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) { 307 void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
308 debugEvent("endTopLevelMethod"); 308 debugEvent("endTopLevelMethod");
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 if (Operator.subtract == nameOrOperator && formals == null) { 366 if (Operator.subtract == nameOrOperator && formals == null) {
367 nameOrOperator = Operator.unaryMinus; 367 nameOrOperator = Operator.unaryMinus;
368 } 368 }
369 String name; 369 String name;
370 ProcedureKind kind; 370 ProcedureKind kind;
371 if (nameOrOperator is Operator) { 371 if (nameOrOperator is Operator) {
372 name = operatorToString(nameOrOperator); 372 name = operatorToString(nameOrOperator);
373 kind = ProcedureKind.Operator; 373 kind = ProcedureKind.Operator;
374 int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator); 374 int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator);
375 if ((formals?.length ?? 0) != requiredArgumentCount) { 375 if ((formals?.length ?? 0) != requiredArgumentCount) {
376 library.addCompileTimeError( 376 library.deprecated_addCompileTimeError(
377 charOffset, 377 charOffset,
378 "Operator '$name' must have exactly $requiredArgumentCount " 378 "Operator '$name' must have exactly $requiredArgumentCount "
379 "parameters."); 379 "parameters.");
380 } else { 380 } else {
381 if (formals != null) { 381 if (formals != null) {
382 for (FormalParameterBuilder formal in formals) { 382 for (FormalParameterBuilder formal in formals) {
383 if (!formal.isRequired) { 383 if (!formal.isRequired) {
384 library.addCompileTimeError(formal.charOffset, 384 library.deprecated_addCompileTimeError(formal.charOffset,
385 "An operator can't have optional parameters."); 385 "An operator can't have optional parameters.");
386 } 386 }
387 } 387 }
388 } 388 }
389 } 389 }
390 } else { 390 } else {
391 name = nameOrOperator; 391 name = nameOrOperator;
392 kind = computeProcedureKind(getOrSet); 392 kind = computeProcedureKind(getOrSet);
393 } 393 }
394 TypeBuilder returnType = pop(); 394 TypeBuilder returnType = pop();
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 formals = new List<FormalParameterBuilder>.filled(count + 1, null, 545 formals = new List<FormalParameterBuilder>.filled(count + 1, null,
546 growable: true); 546 growable: true);
547 formals[count] = last; 547 formals[count] = last;
548 } 548 }
549 popList(count, formals); 549 popList(count, formals);
550 } 550 }
551 if (formals != null) { 551 if (formals != null) {
552 if (formals.length == 2) { 552 if (formals.length == 2) {
553 // The name may be null for generalized function types. 553 // The name may be null for generalized function types.
554 if (formals[0].name != null && formals[0].name == formals[1].name) { 554 if (formals[0].name != null && formals[0].name == formals[1].name) {
555 library.addCompileTimeError(formals[1].charOffset, 555 library.deprecated_addCompileTimeError(formals[1].charOffset,
556 "Duplicated parameter name '${formals[1].name}'."); 556 "Duplicated parameter name '${formals[1].name}'.");
557 library.addCompileTimeError(formals[0].charOffset, 557 library.deprecated_addCompileTimeError(formals[0].charOffset,
558 "Other parameter named '${formals[1].name}'."); 558 "Other parameter named '${formals[1].name}'.");
559 } 559 }
560 } else if (formals.length > 2) { 560 } else if (formals.length > 2) {
561 Map<String, FormalParameterBuilder> seenNames = 561 Map<String, FormalParameterBuilder> seenNames =
562 <String, FormalParameterBuilder>{}; 562 <String, FormalParameterBuilder>{};
563 for (FormalParameterBuilder formal in formals) { 563 for (FormalParameterBuilder formal in formals) {
564 if (formal.name == null) continue; 564 if (formal.name == null) continue;
565 if (seenNames.containsKey(formal.name)) { 565 if (seenNames.containsKey(formal.name)) {
566 library.addCompileTimeError(formal.charOffset, 566 library.deprecated_addCompileTimeError(formal.charOffset,
567 "Duplicated parameter name '${formal.name}'."); 567 "Duplicated parameter name '${formal.name}'.");
568 library.addCompileTimeError(seenNames[formal.name].charOffset, 568 library.deprecated_addCompileTimeError(
569 seenNames[formal.name].charOffset,
569 "Other parameter named '${formal.name}'."); 570 "Other parameter named '${formal.name}'.");
570 } else { 571 } else {
571 seenNames[formal.name] = formal; 572 seenNames[formal.name] = formal;
572 } 573 }
573 } 574 }
574 } 575 }
575 } 576 }
576 push(beginToken.charOffset); 577 push(beginToken.charOffset);
577 push(formals ?? NullValue.FormalParameters); 578 push(formals ?? NullValue.FormalParameters);
578 } 579 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 name = pop(); 662 name = pop();
662 if (type is FunctionTypeBuilder) { 663 if (type is FunctionTypeBuilder) {
663 // TODO(ahe): We need to start a nested declaration when parsing the 664 // TODO(ahe): We need to start a nested declaration when parsing the
664 // formals and return type so we can correctly bind 665 // formals and return type so we can correctly bind
665 // `type.typeVariables`. A typedef can have type variables, and a new 666 // `type.typeVariables`. A typedef can have type variables, and a new
666 // function type can also have type variables (representing the type of 667 // function type can also have type variables (representing the type of
667 // a generic function). 668 // a generic function).
668 functionType = type; 669 functionType = type;
669 } else { 670 } else {
670 // TODO(ahe): Improve this error message. 671 // TODO(ahe): Improve this error message.
671 library.addCompileTimeError( 672 library.deprecated_addCompileTimeError(
672 equals.charOffset, "Can't create typedef from non-function type."); 673 equals.charOffset, "Can't create typedef from non-function type.");
673 } 674 }
674 } 675 }
675 List<MetadataBuilder> metadata = pop(); 676 List<MetadataBuilder> metadata = pop();
676 library.addFunctionTypeAlias( 677 library.addFunctionTypeAlias(
677 metadata, name, typeVariables, functionType, charOffset); 678 metadata, name, typeVariables, functionType, charOffset);
678 checkEmpty(typedefKeyword.charOffset); 679 checkEmpty(typedefKeyword.charOffset);
679 silenceParserErrors = true; 680 silenceParserErrors = true;
680 } 681 }
681 682
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 nativeMethodName = 860 nativeMethodName =
860 stringExpectedAfterNative ? extractNativeMethodName(token) : ""; 861 stringExpectedAfterNative ? extractNativeMethodName(token) : "";
861 return recover; 862 return recover;
862 } 863 }
863 } 864 }
864 return super.handleUnrecoverableError(token, message); 865 return super.handleUnrecoverableError(token, message);
865 } 866 }
866 867
867 @override 868 @override
868 void addCompileTimeErrorFromMessage(FastaMessage message) { 869 void addCompileTimeErrorFromMessage(FastaMessage message) {
869 library.addCompileTimeError(message.charOffset, message.message, 870 library.deprecated_addCompileTimeError(message.charOffset, message.message,
870 fileUri: message.uri); 871 fileUri: message.uri);
871 } 872 }
872 873
873 @override 874 @override
874 Link<Token> handleMemberName(Link<Token> identifiers) { 875 Link<Token> handleMemberName(Link<Token> identifiers) {
875 if (!enableNative || identifiers.isEmpty) return identifiers; 876 if (!enableNative || identifiers.isEmpty) return identifiers;
876 return removeNativeClause(identifiers, stringExpectedAfterNative); 877 return removeNativeClause(identifiers, stringExpectedAfterNative);
877 } 878 }
878 879
879 @override 880 @override
880 void debugEvent(String name) { 881 void debugEvent(String name) {
881 // printEvent(name); 882 // printEvent(name);
882 } 883 }
883 } 884 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/source/diet_listener.dart ('k') | pkg/front_end/lib/src/fasta/source/source_class_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698