Marc Bollinger Marc Bollinger - 1 year ago 88 Question

Does VB.NET not allow line continuations over commented-out lines?

I just had this throw a compilation error while refactoring some legacy (hence VB.NET) unit tests, where I wanted to just comment out one of the sample inputs to MBUnit:

<RowTest> _
'<Row("Something")> _
<Row("SomethingElse")> _

Which gave:

Attribute specifier is not a complete statement. Use a line continuation to apply the
attribute to the following statement.

Is it actually treating the whitespace/commented-out line as an actual line? Generally, when I gripe about VB.NET, I preface it with, "Now, I wouldn't want to be the guy writing their grammar, but..." This seems like one of those cases where I don't know the answer, if I'm right. But I do know want to know the answer, in this case.

Answer Source

Yes, as far as I understand it, the problem is that your first line continuation adds the commented out line as part of the first line, and then the line continuation character on the commented out line is ignored since it's part of a comment so it ends up being:

<RowTest> '<Row("Something")> _  <-- this line continuation character is ignored since it's commented out.
<Row("SomethingElse")> _

What would be needed to support this would be a way to end a comment other than a newline, but as it's usually not a problem and I think it would affect the compiling speed etc quite a bit since it would make it have to parse all comments I suppose it's not seen as worthwhile.