[cfe-commits] [PATCH] Remove bad fix.
Daniel Jasper
djasper at google.com
Tue Dec 4 01:39:04 PST 2012
Now also with the correct fix for the invalid memory access (very stupid oversight). However, I agree that this needs a more robust and elegant design and will start working on that.
Hi klimek,
http://llvm-reviews.chandlerc.com/D159
CHANGE SINCE LAST DIFF
http://llvm-reviews.chandlerc.com/D159?vs=405&id=406#toc
Files:
include/clang/Format/Format.h
lib/Format/Format.cpp
unittests/Format/FormatTest.cpp
Index: include/clang/Format/Format.h
===================================================================
--- include/clang/Format/Format.h
+++ include/clang/Format/Format.h
@@ -15,7 +15,7 @@
///
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_FORMAT_FORMAT_H_
+#ifndef LLVM_CLANG_FORMAT_FORMAT_H
#define LLVM_CLANG_FORMAT_FORMAT_H
#include "clang/Frontend/FrontendAction.h"
Index: lib/Format/Format.cpp
===================================================================
--- lib/Format/Format.cpp
+++ lib/Format/Format.cpp
@@ -28,9 +28,10 @@
// FIXME: Move somewhere sane.
struct TokenAnnotation {
- enum TokenType { TT_Unknown, TT_TemplateOpener, TT_BinaryOperator,
- TT_UnaryOperator, TT_OverloadedOperator, TT_PointerOrReference,
- TT_ConditionalExpr, TT_LineComment, TT_BlockComment };
+ enum TokenType { TT_Unknown, TT_TemplateOpener, TT_TemplateCloser,
+ TT_BinaryOperator, TT_UnaryOperator, TT_OverloadedOperator,
+ TT_PointerOrReference, TT_ConditionalExpr, TT_LineComment,
+ TT_BlockComment };
TokenType Type;
@@ -167,14 +168,13 @@
State.Column = State.Column - Previous.Tok.getLength();
else if (Previous.Tok.is(tok::equal) && ParenLevel != 0)
State.Column = State.Indent[ParenLevel] + 4;
- else if (ParenLevel < State.Indent.size())
+ else
State.Column = State.Indent[ParenLevel];
if (!DryRun)
replaceWhitespace(Current, 1, State.Column);
State.Column += Current.Tok.getLength();
- if (ParenLevel < State.LastSpace.size())
- State.LastSpace[ParenLevel] = State.Indent[ParenLevel];
+ State.LastSpace[ParenLevel] = State.Indent[ParenLevel];
if (Current.Tok.is(tok::colon) &&
Annotations[Index].Type != TokenAnnotation::TT_ConditionalExpr) {
State.Indent[ParenLevel] += 2;
@@ -189,24 +189,20 @@
replaceWhitespace(Current, 0, Spaces);
if (Previous.Tok.is(tok::l_paren))
State.Indent[ParenLevel] = State.Column;
- if (Previous.Tok.is(tok::less) &&
- Annotations[Index - 1].Type == TokenAnnotation::TT_TemplateOpener &&
- ParenLevel < State.Indent.size())
+ if (Annotations[Index - 1].Type == TokenAnnotation::TT_TemplateOpener)
State.Indent[ParenLevel] = State.Column;
if (Current.Tok.is(tok::colon)) {
State.Indent[ParenLevel] = State.Column + 3;
State.InCtorInitializer = true;
}
// Top-level spaces are exempt as that mostly leads to better results.
- if (Spaces > 0 && ParenLevel != 0 &&
- ParenLevel < State.LastSpace.size())
+ if (Spaces > 0 && ParenLevel != 0)
State.LastSpace[ParenLevel] = State.Column + Spaces;
State.Column += Current.Tok.getLength() + Spaces;
}
- if (!DryRun &&
- (Current.Tok.is(tok::r_paren) || Current.Tok.is(tok::r_square) ||
- Annotations[Index].Type == TokenAnnotation::TT_TemplateOpener)) {
+ if (Current.Tok.is(tok::r_paren) || Current.Tok.is(tok::r_square) ||
+ Annotations[Index].Type == TokenAnnotation::TT_TemplateCloser) {
State.Indent.pop_back();
State.LastSpace.pop_back();
}
@@ -355,7 +351,7 @@
bool parseAngle(unsigned Level) {
while (Index < Tokens.size()) {
if (Tokens[Index].Tok.is(tok::greater)) {
- Annotations[Index].Type = TokenAnnotation::TT_TemplateOpener;
+ Annotations[Index].Type = TokenAnnotation::TT_TemplateCloser;
Annotations[Index].ParenLevel = Level;
next();
return true;
@@ -428,6 +424,7 @@
if (parseAngle(Level + 1))
Annotations[CurrentIndex].Type = TokenAnnotation::TT_TemplateOpener;
else {
+ Annotations[CurrentIndex].ParenLevel = Level;
Annotations[CurrentIndex].Type = TokenAnnotation::TT_BinaryOperator;
Index = CurrentIndex + 1;
}
@@ -497,14 +494,17 @@
if (Annotation.Type == TokenAnnotation::TT_TemplateOpener &&
Annotations[i - 1].Type == TokenAnnotation::TT_TemplateOpener)
Annotation.SpaceRequiredBefore = Style.SplitTemplateClosingGreater;
+ else if (Annotation.Type == TokenAnnotation::TT_TemplateCloser &&
+ Annotations[i - 1].Type == TokenAnnotation::TT_TemplateCloser)
+ Annotation.SpaceRequiredBefore = Style.SplitTemplateClosingGreater;
else
Annotation.SpaceRequiredBefore = false;
} else if (
Annotation.Type == TokenAnnotation::TT_BinaryOperator ||
Annotations[i - 1].Type == TokenAnnotation::TT_BinaryOperator) {
Annotation.SpaceRequiredBefore = true;
} else if (
- Annotations[i - 1].Type == TokenAnnotation::TT_TemplateOpener &&
+ Annotations[i - 1].Type == TokenAnnotation::TT_TemplateCloser &&
Line.Tokens[i].Tok.is(tok::l_paren)) {
Annotation.SpaceRequiredBefore = false;
} else {
Index: unittests/Format/FormatTest.cpp
===================================================================
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -256,6 +256,12 @@
verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa));");
+
+ verifyFormat(
+ "aaaaaaaa(aaaaaaaaaaaaa, aaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)),\n"
+ " aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)));");
}
TEST_F(FormatTest, AlignsStringLiterals) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D159.2.patch
Type: text/x-patch
Size: 5773 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121204/da355f4c/attachment.bin>
More information about the cfe-commits
mailing list