mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 21:10:22 +00:00
Add DiagnosticMessage support API
Change-Id: I0ae8d37e48951a58bd2d9016397baeee916857ee Reviewed-on: https://dart-review.googlesource.com/c/78063 Reviewed-by: Aske Simon Christensen <askesc@google.com> Auto-Submit: Peter von der Ahé <ahe@google.com>
This commit is contained in:
parent
88bde88112
commit
e502edf28b
|
@ -8,10 +8,9 @@ import 'package:analyzer_fe_comparison/src/comparison_node.dart';
|
|||
import 'package:front_end/src/api_prototype/compiler_options.dart'
|
||||
show CompilerOptions;
|
||||
import 'package:front_end/src/api_prototype/diagnostic_message.dart'
|
||||
show DiagnosticMessage, DiagnosticMessageHandler;
|
||||
show DiagnosticMessage, DiagnosticMessageHandler, getMessageHeaderText;
|
||||
import 'package:front_end/src/api_prototype/kernel_generator.dart';
|
||||
import 'package:front_end/src/api_prototype/standard_file_system.dart';
|
||||
import 'package:front_end/src/fasta/messages.dart' show FormattedMessage;
|
||||
import 'package:kernel/ast.dart';
|
||||
import 'package:kernel/target/targets.dart';
|
||||
|
||||
|
@ -60,10 +59,7 @@ Future<ComparisonNode> analyzeProgram(Uri input, Uri packagesFileUri,
|
|||
}
|
||||
|
||||
ComparisonNode _diagnosticMessageToNode(DiagnosticMessage message) {
|
||||
// TODO(ahe): Temporarily using FormattedMessage until DiagnosticMessage
|
||||
// is extended to support this use case.
|
||||
FormattedMessage formatted = message;
|
||||
return ComparisonNode(formatted.message);
|
||||
return ComparisonNode(getMessageHeaderText(message));
|
||||
}
|
||||
|
||||
CompilerOptions _makeCompilerOptions(Uri packagesFileUri, Uri platformUri,
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
library front_end.diagnostic_message;
|
||||
|
||||
import '../fasta/fasta_codes.dart' show Code, FormattedMessage;
|
||||
|
||||
import '../fasta/severity.dart' show Severity;
|
||||
|
||||
/// The type of a diagnostic message callback. For example:
|
||||
|
@ -32,7 +34,29 @@ abstract class DiagnosticMessage {
|
|||
Iterable<String> get plainTextFormatted;
|
||||
|
||||
Severity get severity;
|
||||
|
||||
// TODO(ahe): Rename this, it's actually an error code.
|
||||
int get index;
|
||||
}
|
||||
|
||||
/// This method is subject to change.
|
||||
Uri getMessageUri(DiagnosticMessage message) {
|
||||
return message is FormattedMessage ? message.uri : null;
|
||||
}
|
||||
|
||||
/// This method is subject to change.
|
||||
Code getMessageCodeObject(DiagnosticMessage message) {
|
||||
return message is FormattedMessage ? message.code : null;
|
||||
}
|
||||
|
||||
/// This method is subject to change.
|
||||
String getMessageHeaderText(DiagnosticMessage message) {
|
||||
return message is FormattedMessage ? message.message : null;
|
||||
}
|
||||
|
||||
/// This method is subject to change.
|
||||
int getMessageCode(DiagnosticMessage message) {
|
||||
return message is FormattedMessage ? message.code.index : -1;
|
||||
}
|
||||
|
||||
/// This method is subject to change.
|
||||
Map<String, dynamic> getMessageArguments(DiagnosticMessage message) {
|
||||
return message is FormattedMessage ? message.arguments : null;
|
||||
}
|
||||
|
|
|
@ -10,11 +10,22 @@ import 'dart:io' show Platform, Process, ProcessResult, stderr, stdout;
|
|||
|
||||
import '../fasta/colors.dart' show ALL_CODES, TERMINAL_CAPABILITIES;
|
||||
|
||||
import 'diagnostic_message.dart' show DiagnosticMessage;
|
||||
|
||||
/// True if we should enable colors in output.
|
||||
///
|
||||
/// We enable colors only when both [stdout] and [stderr] support ANSI escapes.
|
||||
final bool enableTerminalColors = _computeEnableColors();
|
||||
|
||||
void printDiagnosticMessage(
|
||||
DiagnosticMessage message, void Function(String) println) {
|
||||
if (enableTerminalColors) {
|
||||
message.ansiFormatted.forEach(println);
|
||||
} else {
|
||||
message.plainTextFormatted.forEach(println);
|
||||
}
|
||||
}
|
||||
|
||||
/// On Windows, colors are enabled if both stdout and stderr supports ANSI
|
||||
/// escapes. On other platforms, we rely on the external programs `tty` and
|
||||
/// `tput` to compute if ANSI colors are supported.
|
||||
|
|
|
@ -2,17 +2,10 @@
|
|||
// 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.
|
||||
|
||||
import '../api_prototype/diagnostic_message.dart' show DiagnosticMessage;
|
||||
|
||||
import '../api_prototype/terminal_color_support.dart' show enableTerminalColors;
|
||||
|
||||
import '../fasta/fasta_codes.dart' show FormattedMessage;
|
||||
|
||||
export '../api_prototype/compiler_options.dart'
|
||||
show CompilerOptions, ProblemHandler;
|
||||
export '../api_prototype/compiler_options.dart' show CompilerOptions;
|
||||
|
||||
export '../api_prototype/diagnostic_message.dart'
|
||||
show DiagnosticMessage, DiagnosticMessageHandler;
|
||||
show DiagnosticMessage, DiagnosticMessageHandler, getMessageUri;
|
||||
|
||||
export '../api_prototype/file_system.dart'
|
||||
show FileSystem, FileSystemEntity, FileSystemException;
|
||||
|
@ -27,6 +20,9 @@ export '../api_prototype/memory_file_system.dart' show MemoryFileSystem;
|
|||
|
||||
export '../api_prototype/standard_file_system.dart' show StandardFileSystem;
|
||||
|
||||
export '../api_prototype/terminal_color_support.dart'
|
||||
show printDiagnosticMessage;
|
||||
|
||||
export '../base/processed_options.dart' show ProcessedOptions;
|
||||
|
||||
export '../compute_platform_binaries_location.dart'
|
||||
|
@ -59,14 +55,3 @@ export '../fasta/hybrid_file_system.dart' show HybridFileSystem;
|
|||
export '../fasta/kernel/utils.dart' show serializeComponent, serializeProcedure;
|
||||
|
||||
export '../fasta/severity.dart' show Severity;
|
||||
|
||||
Uri getMessageUri(FormattedMessage message) => message.uri;
|
||||
|
||||
void printDiagnosticMessage(
|
||||
DiagnosticMessage message, void Function(String) println) {
|
||||
if (enableTerminalColors) {
|
||||
message.ansiFormatted.forEach(println);
|
||||
} else {
|
||||
message.plainTextFormatted.forEach(println);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,9 +181,6 @@ class FormattedMessage implements DiagnosticMessage {
|
|||
// TODO(ahe): Implement this correctly.
|
||||
return ansiFormatted;
|
||||
}
|
||||
|
||||
@override
|
||||
int get index => code.index;
|
||||
}
|
||||
|
||||
String relativizeUri(Uri uri) {
|
||||
|
|
Loading…
Reference in a new issue