mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
Add code block type to MdCodeBlock.
Adds a code block type to `MdCodeBlock` which will allow us to differentiate between fenced code blocks and indented code blocks with the `missing_code_block_language_in_doc_comment` lint (since only fenced code blocks care about a missing info/language string). Updated tests and added it to the AST printer as well. Change-Id: Ibffc4edc7708fdc0394b24db8da7c282ffe92eba Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/358326 Reviewed-by: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Kallen Tu <kallentu@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
parent
34b7df107f
commit
93d2d44b26
|
@ -24,6 +24,21 @@ final class BlockDocDirective implements DocDirective {
|
|||
DocDirectiveType get type => openingTag.type;
|
||||
}
|
||||
|
||||
/// The type of Markdown code block in a documentation comment.
|
||||
@experimental
|
||||
enum CodeBlockType {
|
||||
/// Fenced code blocks begin with a code fence, preceded by up to three spaces
|
||||
/// of indentation.
|
||||
///
|
||||
/// A code fence is a sequence of at least three consecutive backtick
|
||||
/// characters (`) or tildes (~).
|
||||
fenced,
|
||||
|
||||
/// Indented code blocks have every line of code preceded by four or more
|
||||
/// spaces of indentation.
|
||||
indented,
|
||||
}
|
||||
|
||||
/// An instance of a [DocDirectiveType] in the text of a doc comment, either
|
||||
/// as a [SimpleDocDirective], represented by a single [DocDirectiveTag], or a
|
||||
/// [BlockDocDirective], represented by an opening [DocDirectiveTag] and a
|
||||
|
@ -441,9 +456,13 @@ final class MdCodeBlock {
|
|||
/// fence delimiter lines.
|
||||
final List<MdCodeBlockLine> lines;
|
||||
|
||||
/// The type of Markdown code block that is being represented.
|
||||
final CodeBlockType type;
|
||||
|
||||
MdCodeBlock({
|
||||
required this.infoString,
|
||||
required List<MdCodeBlockLine> lines,
|
||||
required this.type,
|
||||
}) : lines = List.of(lines, growable: false);
|
||||
}
|
||||
|
||||
|
|
|
@ -548,7 +548,11 @@ final class DocCommentBuilder {
|
|||
}
|
||||
|
||||
_codeBlocks.add(
|
||||
MdCodeBlock(infoString: infoString, lines: fencedCodeBlockLines),
|
||||
MdCodeBlock(
|
||||
infoString: infoString,
|
||||
lines: fencedCodeBlockLines,
|
||||
type: CodeBlockType.fenced,
|
||||
),
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
@ -572,7 +576,11 @@ final class DocCommentBuilder {
|
|||
} else {
|
||||
// End the code block.
|
||||
_codeBlocks.add(
|
||||
MdCodeBlock(infoString: null, lines: codeBlockLines),
|
||||
MdCodeBlock(
|
||||
infoString: null,
|
||||
lines: codeBlockLines,
|
||||
type: CodeBlockType.indented,
|
||||
),
|
||||
);
|
||||
return lineInfo;
|
||||
}
|
||||
|
@ -582,7 +590,11 @@ final class DocCommentBuilder {
|
|||
|
||||
// The indented code block ends the comment.
|
||||
_codeBlocks.add(
|
||||
MdCodeBlock(infoString: null, lines: codeBlockLines),
|
||||
MdCodeBlock(
|
||||
infoString: null,
|
||||
lines: codeBlockLines,
|
||||
type: CodeBlockType.indented,
|
||||
),
|
||||
);
|
||||
return lineInfo;
|
||||
}
|
||||
|
|
|
@ -661,6 +661,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: dart
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -673,6 +674,7 @@ Comment
|
|||
length: 4
|
||||
MdCodeBlock
|
||||
infoString: dart
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 58
|
||||
|
@ -757,6 +759,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 15
|
||||
|
@ -769,6 +772,7 @@ Comment
|
|||
length: 3
|
||||
MdCodeBlock
|
||||
infoString: dart
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 53
|
||||
|
@ -801,6 +805,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -830,6 +835,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -866,6 +872,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: dart
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -904,6 +911,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -942,6 +950,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 12
|
||||
|
@ -974,6 +983,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 12
|
||||
|
@ -1009,6 +1019,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 24
|
||||
|
@ -1043,6 +1054,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 25
|
||||
|
@ -1084,6 +1096,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 12
|
||||
|
@ -1096,6 +1109,7 @@ Comment
|
|||
length: 4
|
||||
MdCodeBlock
|
||||
infoString: dart
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 54
|
||||
|
@ -1152,6 +1166,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.indented
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 17
|
||||
|
@ -1198,6 +1213,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.indented
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 3
|
||||
|
@ -1232,6 +1248,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.indented
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 10
|
||||
|
@ -1262,6 +1279,7 @@ Comment
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 13
|
||||
|
|
|
@ -234,6 +234,7 @@ ClassDeclaration
|
|||
codeBlocks
|
||||
MdCodeBlock
|
||||
infoString: <empty>
|
||||
type: CodeBlockType.fenced
|
||||
lines
|
||||
MdCodeBlockLine
|
||||
offset: 178
|
||||
|
|
|
@ -1785,6 +1785,7 @@ Expected parent: (${parent.runtimeType}) $parent
|
|||
_sink.withIndent(() {
|
||||
var infoString = codeBlock.infoString;
|
||||
_sink.writelnWithIndent('infoString: ${infoString ?? '<empty>'}');
|
||||
_sink.writelnWithIndent('type: ${codeBlock.type}');
|
||||
assert(codeBlock.lines.isNotEmpty);
|
||||
_sink.writelnWithIndent('lines');
|
||||
_sink.withIndent(() {
|
||||
|
|
Loading…
Reference in a new issue