Macro. Add 'correctionMessage' to MacroDiagnostic.

Note, that currently `correctionMessage` is a property of `ErrorCode`,
so we cannot forward from macro diagnostic. Something to discuss.

Change-Id: I6de86f4c16356bbf7bd61c483bad4d039ca67638
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351620
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2024-02-09 23:12:10 +00:00 committed by Commit Queue
parent 670b9ba9cf
commit 3125174cb1
7 changed files with 16 additions and 0 deletions

View file

@ -2366,6 +2366,7 @@ class ResolutionReader {
severity: readEnum(macro.Severity.values),
message: _readMacroDiagnosticMessage(),
contextMessages: readTypedList(_readMacroDiagnosticMessage),
correctionMessage: _reader.readOptionalStringUtf8(),
);
}
}

View file

@ -972,6 +972,7 @@ class ResolutionSink extends _SummaryDataWriter {
diagnostic.contextMessages,
_writeMacroDiagnosticMessage,
);
writeOptionalStringUtf8(diagnostic.correctionMessage);
}
}

View file

@ -580,6 +580,7 @@ class LibraryMacroApplier {
message: convertMessage(diagnostic.message),
contextMessages:
diagnostic.contextMessages.map(convertMessage).toList(),
correctionMessage: diagnostic.correctionMessage,
),
);
}

View file

@ -101,11 +101,13 @@ final class MacroDiagnostic extends AnalyzerMacroDiagnostic {
final macro.Severity severity;
final MacroDiagnosticMessage message;
final List<MacroDiagnosticMessage> contextMessages;
final String? correctionMessage;
MacroDiagnostic({
required this.severity,
required this.message,
required this.contextMessages,
required this.correctionMessage,
});
}

View file

@ -935,6 +935,11 @@ class _ElementWriter {
_sink.writelnWithIndent(
'severity: ${diagnostic.severity.name}',
);
if (diagnostic.correctionMessage case var correctionMessage?) {
_sink.writelnWithIndent(
'correctionMessage: $correctionMessage',
);
}
});
}
},

View file

@ -94,6 +94,7 @@ import 'package:_fe_analyzer_shared/src/macros/api.dart';
target: declaration.asDiagnosticTarget,
),
_severity,
correctionMessage: 'Correction message',
),
);
}

View file

@ -3597,6 +3597,7 @@ library
target: ElementMacroDiagnosticTarget
element: self::@class::A
severity: warning
correctionMessage: Correction message
''');
}
@ -3632,6 +3633,7 @@ library
target: ElementMacroDiagnosticTarget
element: self::@class::A::@constructor::new
severity: warning
correctionMessage: Correction message
''');
}
@ -3671,6 +3673,7 @@ library
target: ElementMacroDiagnosticTarget
element: self::@class::A::@field::foo
severity: warning
correctionMessage: Correction message
accessors
synthetic get foo @-1
returnType: int
@ -3712,6 +3715,7 @@ library
target: ElementMacroDiagnosticTarget
element: self::@class::A::@method::foo
severity: warning
correctionMessage: Correction message
''');
}
@ -3745,6 +3749,7 @@ library
target: ElementMacroDiagnosticTarget
element: self::@mixin::A
severity: warning
correctionMessage: Correction message
superclassConstraints
Object
''');