2247 better isolates the AttributeRemoverTests to just AttributeRemover. Along the way, a new assert helper was created that, unlike assertMacroExpansion, doesn't trim newlines before comparing values.
Notably, this revealed a previously undetected behavior in AttributeRemover: it outputs an additional leading newline when the removed attribute isn't preceded by any tokens. For instance:
assertSyntaxRemovingTestAttributes {
"""
@Test
var x: Int
"""
} reduction: {
"var x: Int"
}
//failed - Attribute removal did not produce the expected reduced source
//+
// var x: Int
//
//Actual reduced source:
//
//var x: Int
and:
assertSyntaxRemovingTestAttributes {
"""
@Test
/* comment */
var value: Int
"""
} reduction: {
"""
/* comment */
var value: Int
"""
}
//failed - Attribute removal did not produce the expected reduced source
//+
// /* comment */
// var value: Int
//
//Actual reduced source:
//
///* comment */
//var value: Int
The following tests outputs have an extra leading newline:
Before #2247, this behavior is masked by assertMacroExpansion. In #2247, the above tests are "fixed" by including the unwanted leading newlines in the expected output and marking those tests with FIXMEs (to be properly fixed in a separate PR).
Description
2247 better isolates the
AttributeRemoverTests
to justAttributeRemover
. Along the way, a new assert helper was created that, unlikeassertMacroExpansion
, doesn't trim newlines before comparing values.Notably, this revealed a previously undetected behavior in
AttributeRemover
: it outputs an additional leading newline when the removed attribute isn't preceded by any tokens. For instance:and:
The following tests outputs have an extra leading newline:
testEmptyOnOwnLineBeforeVariable
testEmptyTwiceOnOwnLineBeforeVariable
testEmpyNewlineBlockComment
testEmptyAndAttributeOnOwnLinesBeforeVariable
testEmptyOnOwnLineThenEmptyBeforeVariable
Before #2247, this behavior is masked by
assertMacroExpansion
. In #2247, the above tests are "fixed" by including the unwanted leading newlines in the expected output and marking those tests withFIXME
s (to be properly fixed in a separate PR).Steps to Reproduce
No response