public void TriviaTest_Comments() { LNode node; node = Foo.PlusAttr(F.Trivia(S.TriviaMLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaMLComment, " after ")); Exact("/* before */Foo; /* after */", node); node = one.PlusAttr(F.Trivia(S.TriviaSLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, " after ")); Exact("// before \n1;\t// after ", node); node = F.Call(F.Id(S.Eq).PlusAttr(F.Trivia(S.TriviaMLComment, "[")).PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, "]")), Foo, x.PlusAttrs(F.TriviaNewline, F.Trivia(S.TriviaMLComment, "{")).PlusTrailingTrivia(F.Trivia(S.TriviaMLComment, "}")) ).PlusAttr(F.Trivia(S.TriviaMLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaMLComment, " after ")); Exact("/* before */Foo /*[*/== //]\n /*{*/x /*}*/; /* after */", node); node = F.Call(Foo).PlusAttrs(a.PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, "Comment after a")), b, F.Trivia(S.TriviaMLComment, "Comment before c"), c); Exact("@[a\t//Comment after a\n" + " , b] /*Comment before c*/@[c] Foo();", node); // TODO: The following example parses as shown but is printed out differently. // Either we should change AbstractTriviaInjector to emit the comment at the // "top level" of the attribute list (not attached to `a`) or we should change // the node printer to print the comma before it prints trailing trivia. node = F.Call(Foo).PlusAttrs(a, F.Trivia(S.TriviaSLComment, "Comment after a"), b, F.Trivia(S.TriviaMLComment, "Comment before c"), c); Exact("@[a] //Comment after a\n" + "@[b] /*Comment before c*/@[c] Foo();", node); }
private LNode AttachTriviaTo(LNode node, IListSource <Trivia> trivia, TriviaLocation loc, LNode parent, int indexInParent) { var newAttrs = GetTriviaToAttach(node, trivia, loc, parent, indexInParent); if (loc == TriviaLocation.Leading) { return(node.PlusAttrsBefore(newAttrs)); } else { return(node.PlusTrailingTrivia(newAttrs)); } }
public void TriviaTest_Comments() { LNode node; node = Foo.PlusAttr(F.Trivia(S.TriviaMLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaMLComment, " after ")); Exact("/* before */Foo /* after */", node); node = one.PlusAttr(F.Trivia(S.TriviaSLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, " after ")); Exact("// before \n1\t// after ", node); Exact("Foo(a,\t// Commentary\n b)", F.Call(Foo, a.PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, " Commentary")), OnNewLine(b))); node = F.Call(F.Id(S.Eq).PlusAttr(F.Trivia(S.TriviaMLComment, "[")).PlusTrailingTrivia(F.Trivia(S.TriviaSLComment, "]")), Foo, x.PlusAttrs(F.TriviaNewline, F.Trivia(S.TriviaMLComment, "x")) ).PlusAttr(F.Trivia(S.TriviaMLComment, " before ")).PlusTrailingTrivia(F.Trivia(S.TriviaMLComment, " after ")); Exact("/* before */Foo /*[*/==\t//]\n/*x*/x /* after */", node); node = F.Call(Foo).PlusAttrs(a, F.Trivia(S.TriviaSLComment, "Comment after a"), b, F.Trivia(S.TriviaMLComment, "Comment before c"), c); Exact("@a //Comment after a\n" + "@b /*Comment before c*/@c Foo()", node); }
protected LNode NewlineAfter(LNode node) { return(node.PlusTrailingTrivia(F.TriviaNewline)); }
protected LNode NewlineAfter(LNode node) { return node.PlusTrailingTrivia(F.TriviaNewline); }
protected LNode NewlineAfter(LNode node) => node.PlusTrailingTrivia(F.TriviaNewline);