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

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

Issue 3003743002: Move tools to tool folder. (Closed)
Patch Set: Fix two problems that show up elsewhere. Created 3 years, 3 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) 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 /// Provides a default implementation of the report and format methods of 5 /// Provides a default implementation of the report and format methods of
6 /// [CompilerContext] that are suitable for command-line tools. The methods in 6 /// [CompilerContext] that are suitable for command-line tools. The methods in
7 /// this library aren't intended to be called directly, instead, one should use 7 /// this library aren't intended to be called directly, instead, one should use
8 /// [CompilerContext]. 8 /// [CompilerContext].
9 library fasta.command_line_reporting; 9 library fasta.command_line_reporting;
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 return !isVerbose; 90 return !isVerbose;
91 91
92 case Severity.warning: 92 case Severity.warning:
93 return hideWarnings; 93 return hideWarnings;
94 } 94 }
95 return unhandled("$severity", "isHidden", -1, null); 95 return unhandled("$severity", "isHidden", -1, null);
96 } 96 }
97 97
98 /// Are problems of [severity] fatal? That is, should the compiler terminate 98 /// Are problems of [severity] fatal? That is, should the compiler terminate
99 /// immediately? 99 /// immediately?
100 bool isFatal(Severity severity) { 100 bool shouldThrowOn(Severity severity) {
101 switch (severity) { 101 switch (severity) {
102 case Severity.error: 102 case Severity.error:
103 return CompilerContext.current.options.throwOnErrors; 103 return CompilerContext.current.options.throwOnErrorsForDebugging;
104 104
105 case Severity.internalProblem: 105 case Severity.internalProblem:
106 return true; 106 return true;
107 107
108 case Severity.nit: 108 case Severity.nit:
109 return CompilerContext.current.options.throwOnNits; 109 return CompilerContext.current.options.throwOnNitsForDebugging;
110 110
111 case Severity.warning: 111 case Severity.warning:
112 return CompilerContext.current.options.throwOnWarnings; 112 return CompilerContext.current.options.throwOnWarningsForDebugging;
113 } 113 }
114 return unhandled("$severity", "isFatal", -1, null); 114 return unhandled("$severity", "shouldThrowOn", -1, null);
115 } 115 }
116 116
117 /// Convert [severity] to a name that can be used to prefix a message. 117 /// Convert [severity] to a name that can be used to prefix a message.
118 String severityName(Severity severity, {bool capitalized: false}) { 118 String severityName(Severity severity, {bool capitalized: false}) {
119 switch (severity) { 119 switch (severity) {
120 case Severity.error: 120 case Severity.error:
121 return capitalized ? "Error" : "error"; 121 return capitalized ? "Error" : "error";
122 122
123 case Severity.internalProblem: 123 case Severity.internalProblem:
124 return capitalized ? "Internal problem" : "internal problem"; 124 return capitalized ? "Internal problem" : "internal problem";
125 125
126 case Severity.nit: 126 case Severity.nit:
127 return capitalized ? "Nit" : "nit"; 127 return capitalized ? "Nit" : "nit";
128 128
129 case Severity.warning: 129 case Severity.warning:
130 return capitalized ? "Warning" : "warning"; 130 return capitalized ? "Warning" : "warning";
131 } 131 }
132 return unhandled("$severity", "severityName", -1, null); 132 return unhandled("$severity", "severityName", -1, null);
133 } 133 }
134 134
135 /// Print a formatted message and throw when errors are treated as fatal. 135 /// Print a formatted message and throw when errors are treated as fatal.
136 /// Also set [exitCode] depending on the value of 136 /// Also set [exitCode] depending on the value of
137 /// `CompilerContext.current.options.setExitCodeOnProblem`. 137 /// `CompilerContext.current.options.setExitCodeOnProblem`.
138 void _printAndThrowIfFatal( 138 void _printAndThrowIfDebugging(
139 String text, Severity severity, Uri uri, int charOffset) { 139 String text, Severity severity, Uri uri, int charOffset) {
140 // I believe we should only set it if we are reporting something, if we are 140 // I believe we should only set it if we are reporting something, if we are
141 // formatting to embed the error in the program, then we probably don't want 141 // formatting to embed the error in the program, then we probably don't want
142 // to do it in format. 142 // to do it in format.
143 // Note: I also want to limit dependencies to dart:io for when we use the FE 143 // Note: I also want to limit dependencies to dart:io for when we use the FE
144 // outside of the VM. This default reporting is likely not going to be used in 144 // outside of the VM. This default reporting is likely not going to be used in
145 // that context, but the default formatter is. 145 // that context, but the default formatter is.
146 if (CompilerContext.current.options.setExitCodeOnProblem) { 146 if (CompilerContext.current.options.setExitCodeOnProblem) {
147 exitCode = 1; 147 exitCode = 1;
148 } 148 }
149 print(text); 149 print(text);
150 if (isFatal(severity)) { 150 if (shouldThrowOn(severity)) {
151 if (isVerbose) print(StackTrace.current); 151 if (isVerbose) print(StackTrace.current);
152 // TODO(sigmund,ahe): ensure there is no circularity when InputError is 152 // TODO(sigmund,ahe): ensure there is no circularity when InputError is
153 // handled. 153 // handled.
154 throw new deprecated_InputError(uri, charOffset, 154 throw new deprecated_InputError(uri, charOffset,
155 "Compilation aborted due to fatal ${severityName(severity)}."); 155 "Compilation aborted due to fatal ${severityName(severity)}.");
156 } 156 }
157 } 157 }
158 158
159 /// Report [message] unless [severity] is suppressed (see [isHidden]). Throws 159 /// Report [message] unless [severity] is suppressed (see [isHidden]). Throws
160 /// an exception if [severity] is fatal (see [isFatal]). 160 /// an exception if [severity] is fatal (see [isFatal]).
161 /// 161 ///
162 /// This method isn't intended to be called directly. Use 162 /// This method isn't intended to be called directly. Use
163 /// [CompilerContext.report] instead. 163 /// [CompilerContext.report] instead.
164 void report(LocatedMessage message, Severity severity) { 164 void report(LocatedMessage message, Severity severity) {
165 if (isHidden(severity)) return; 165 if (isHidden(severity)) return;
166 _printAndThrowIfFatal( 166 _printAndThrowIfDebugging(
167 format(message, severity), severity, message.uri, message.charOffset); 167 format(message, severity), severity, message.uri, message.charOffset);
168 } 168 }
169 169
170 /// Similar to [report]. 170 /// Similar to [report].
171 /// 171 ///
172 /// This method isn't intended to be called directly. Use 172 /// This method isn't intended to be called directly. Use
173 /// [CompilerContext.reportWithoutLocation] instead. 173 /// [CompilerContext.reportWithoutLocation] instead.
174 void reportWithoutLocation(Message message, Severity severity) { 174 void reportWithoutLocation(Message message, Severity severity) {
175 if (isHidden(severity)) return; 175 if (isHidden(severity)) return;
176 _printAndThrowIfFatal( 176 _printAndThrowIfDebugging(
177 formatWithoutLocation(message, severity), severity, null, -1); 177 formatWithoutLocation(message, severity), severity, null, -1);
178 } 178 }
179 179
180 /// Formats [message] as described in [formatInternal]. 180 /// Formats [message] as described in [formatInternal].
181 /// 181 ///
182 /// This method isn't intended to be called directly. Use 182 /// This method isn't intended to be called directly. Use
183 /// [CompilerContext.format] instead. 183 /// [CompilerContext.format] instead.
184 String format(LocatedMessage message, Severity severity) { 184 String format(LocatedMessage message, Severity severity) {
185 return formatInternal( 185 return formatInternal(
186 message.messageObject, severity, message.uri, message.charOffset); 186 message.messageObject, severity, message.uri, message.charOffset);
187 } 187 }
188 188
189 /// Formats [message] as described in [formatInternal]. 189 /// Formats [message] as described in [formatInternal].
190 /// 190 ///
191 /// This method isn't intended to be called directly. Use 191 /// This method isn't intended to be called directly. Use
192 /// [CompilerContext.formatWithoutLocation] instead. 192 /// [CompilerContext.formatWithoutLocation] instead.
193 String formatWithoutLocation(Message message, Severity severity) { 193 String formatWithoutLocation(Message message, Severity severity) {
194 return formatInternal(message, severity, null, -1); 194 return formatInternal(message, severity, null, -1);
195 } 195 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698