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

Side by Side Diff: pkg/front_end/tool/_fasta/generate_messages.dart

Issue 2765253002: Report error on only-try block. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « pkg/front_end/messages.yaml ('k') | tests/co19/co19-kernel.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'dart:io'; 5 import 'dart:io';
6 6
7 import 'dart:isolate'; 7 import 'dart:isolate';
8 8
9 import 'package:yaml/yaml.dart' show loadYaml; 9 import 'package:yaml/yaml.dart' show loadYaml;
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 await new File.fromUri(problemsFile).writeAsString("$sb", flush: true); 57 await new File.fromUri(problemsFile).writeAsString("$sb", flush: true);
58 port.close(); 58 port.close();
59 } 59 }
60 60
61 final RegExp placeholderPattern = new RegExp("#[a-zA-Z0-9_]+"); 61 final RegExp placeholderPattern = new RegExp("#[a-zA-Z0-9_]+");
62 62
63 String compileTemplate(String name, String template, String tip) { 63 String compileTemplate(String name, String template, String tip) {
64 var parameters = new Set<String>(); 64 var parameters = new Set<String>();
65 var conversions = new Set<String>(); 65 var conversions = new Set<String>();
66 var arguments = new Set<String>(); 66 var arguments = new Set<String>();
67 for (Match match in placeholderPattern.allMatches("$template$tip")) { 67 for (Match match in placeholderPattern.allMatches("$template${tip ?? ''}")) {
68 switch (match[0]) { 68 switch (match[0]) {
69 case "#character": 69 case "#character":
70 parameters.add("String character"); 70 parameters.add("String character");
71 arguments.add("'character': character,"); 71 arguments.add("'character': character,");
72 break; 72 break;
73 73
74 case "#unicode": 74 case "#unicode":
75 parameters.add("int codePoint"); 75 parameters.add("int codePoint");
76 conversions.add("String unicode = " 76 conversions.add("String unicode = "
77 "\"(U+\${codePoint.toRadixString(16).padLeft(4, '0')})\";"); 77 "\"(U+\${codePoint.toRadixString(16).padLeft(4, '0')})\";");
78 arguments.add("'codePoint': codePoint,"); 78 arguments.add("'codePoint': codePoint,");
79 break; 79 break;
80 80
81 case "#name": 81 case "#name":
82 parameters.add("String name"); 82 parameters.add("String name");
83 arguments.add("'name': name,"); 83 arguments.add("'name': name,");
84 break; 84 break;
85 85
86 case "#lexeme": 86 case "#lexeme":
87 parameters.add("Token token"); 87 parameters.add("Token token");
88 conversions.add("String lexeme = token.lexeme;"); 88 conversions.add("String lexeme = token.lexeme;");
89 arguments.add("'token': token,"); 89 arguments.add("'token': token,");
90 break; 90 break;
91 91
92 case "#string": 92 case "#string":
93 parameters.add("String string"); 93 parameters.add("String string");
94 arguments.add("'string': string,"); 94 arguments.add("'string': string,");
95 break; 95 break;
96
97 default:
98 throw "Unhandled placeholder in template: ${match[0]}";
96 } 99 }
97 } 100 }
98 101
99 String interpolate(String name, String text) { 102 String interpolate(String name, String text) {
100 if (text == null) return ""; 103 if (text == null) return "";
101 return " '$name': " 104 return " '$name': "
102 "\"${text.replaceAll(r'$', r'\$').replaceAll('#', '\$')}\","; 105 "\"${text.replaceAll(r'$', r'\$').replaceAll('#', '\$')}\",";
103 } 106 }
104 107
105 return """ 108 return """
106 problem$name(${parameters.join(', ')}) { 109 problem$name(${parameters.join(', ')}) {
107 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. 110 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
108 ${conversions.join('\n ')} 111 ${conversions.join('\n ')}
109 return { 112 return {
110 ${interpolate('message', template)} 113 ${interpolate('message', template)}
111 ${interpolate('tip', tip)} 114 ${interpolate('tip', tip)}
112 'code': ErrorKind.$name, 115 'code': ErrorKind.$name,
113 'arguments': { 116 'arguments': {
114 ${arguments.join('\n ')} 117 ${arguments.join('\n ')}
115 }, 118 },
116 }; 119 };
117 } 120 }
118 """; 121 """;
119 } 122 }
OLDNEW
« no previous file with comments | « pkg/front_end/messages.yaml ('k') | tests/co19/co19-kernel.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698