Skip to content

AttributeRemover outputs a leading newline in some cases #2269

Open
@gohanlon

Description

@gohanlon

Description

#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).

Steps to Reproduce

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions