diff options
8 files changed, 62 insertions, 88 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CommentTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CommentTests.java index ca8d20b7f90..ded306768b4 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CommentTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CommentTests.java @@ -29,14 +29,14 @@ public class CommentTests extends AST2TestBase { return suite(CommentTests.class); } - public void testCountCommentsInHeaderFile() throws ParserException{ + public void testCountCommentsInHeaderFile() throws ParserException { IASTTranslationUnit tu = parse(getHSource(), ParserLanguage.CPP, false, true); IASTComment[] comments = tu.getComments(); assertEquals(9, comments.length); } - public void testCommentsInHeaderFile() throws ParserException{ + public void testCommentsInHeaderFile() throws ParserException { IASTTranslationUnit tu = parse(getHSource(), ParserLanguage.CPP, false, true); IASTComment[] comments = tu.getComments(); @@ -51,14 +51,14 @@ public class CommentTests extends AST2TestBase { assertEquals("//Endcomment h", new String(comments[8].getComment())); } - public void testCountCommentsInCPPFile() throws ParserException{ + public void testCountCommentsInCPPFile() throws ParserException { IASTTranslationUnit tu = parse(getCppSource(), ParserLanguage.CPP, false, true); IASTComment[] comments = tu.getComments(); assertEquals(10, comments.length); } - public void testCommentsInCPPFile() throws ParserException{ + public void testCommentsInCPPFile() throws ParserException { IASTTranslationUnit tu = parse(getCppSource(), ParserLanguage.CPP, false, true); IASTComment[] comments = tu.getComments(); @@ -74,14 +74,14 @@ public class CommentTests extends AST2TestBase { assertEquals("//An integer", new String(comments[9].getComment())); } - public void testCountCommentsInCFile() throws ParserException{ + public void testCountCommentsInCFile() throws ParserException { IASTTranslationUnit tu = parse(getCSource(), ParserLanguage.C, false, true); IASTComment[] comments = tu.getComments(); assertEquals(4, comments.length); } - public void testCommentsInCFile() throws ParserException{ + public void testCommentsInCFile() throws ParserException { IASTTranslationUnit tu = parse(getCSource(), ParserLanguage.C, false, true); IASTComment[] comments = tu.getComments(); @@ -211,7 +211,7 @@ public class CommentTests extends AST2TestBase { } // //comment - public void testCommentLocation_bug186337() throws Exception{ + public void testCommentLocation_bug186337() throws Exception { CharSequence code= getContents(1)[0]; IASTTranslationUnit tu = parse(code.toString(), ParserLanguage.CPP, false, true); IASTComment[] comments = tu.getComments(); @@ -234,7 +234,6 @@ public class CommentTests extends AST2TestBase { // #ifdef WHATEVA // TODO: ignored // #endif // TODO: ignored // // TODO: shows up in task list - public void testCommentInDirectives_bug192546() throws Exception { CharSequence code= getContents(1)[0]; IASTTranslationUnit tu = parse(code.toString(), ParserLanguage.CPP, false, false); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java index 7a5b2a3c690..370ef687b8d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java @@ -6,7 +6,7 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * John Camelon (IBM) - Initial API and implementation + * John Camelon (IBM) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; @@ -22,13 +22,12 @@ import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; /** * Extern "C" construct. */ -public class CPPASTLinkageSpecification extends ASTNode implements - ICPPASTLinkageSpecification, IASTAmbiguityParent { - +public class CPPASTLinkageSpecification extends ASTNode + implements ICPPASTLinkageSpecification, IASTAmbiguityParent { private String fLiteral; private IASTDeclaration[] fAllDeclarations; private IASTDeclaration[] fActiveDeclarations; - private int fLastDeclaration=-1; + private int fLastDeclaration = -1; public CPPASTLinkageSpecification() { } @@ -45,13 +44,10 @@ public class CPPASTLinkageSpecification extends ASTNode implements @Override public CPPASTLinkageSpecification copy(CopyStyle style) { CPPASTLinkageSpecification copy = new CPPASTLinkageSpecification(fLiteral); - for (IASTDeclaration declaration : getDeclarations()) + for (IASTDeclaration declaration : getDeclarations()) { copy.addDeclaration(declaration == null ? null : declaration.copy(style)); - copy.setOffsetAndLength(this); - if (style == CopyStyle.withLocations) { - copy.setCopyLocation(this); } - return copy; + return copy(copy, style); } @Override @@ -70,7 +66,7 @@ public class CPPASTLinkageSpecification extends ASTNode implements if (decl != null) { decl.setParent(this); decl.setPropertyInParent(OWNED_DECLARATION); - fAllDeclarations = ArrayUtil.appendAt( IASTDeclaration.class, fAllDeclarations, ++fLastDeclaration, decl); + fAllDeclarations = ArrayUtil.appendAt(IASTDeclaration.class, fAllDeclarations, ++fLastDeclaration, decl); fActiveDeclarations= null; } } @@ -99,9 +95,9 @@ public class CPPASTLinkageSpecification extends ASTNode implements public boolean accept(ASTVisitor action) { if (action.shouldVisitDeclarations) { switch (action.visit(this)) { - case ASTVisitor.PROCESS_ABORT : return false; - case ASTVisitor.PROCESS_SKIP : return true; - default : break; + case ASTVisitor.PROCESS_ABORT: return false; + case ASTVisitor.PROCESS_SKIP: return true; + default: break; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenter.java index 00a703461af..f78c870b83f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenter.java @@ -65,7 +65,7 @@ public class ASTCommenter { } private int checkOffsets(IASTNode node) { - int offset = ((ASTNode)node).getOffset(); + int offset = ((ASTNode) node).getOffset(); int status = PROCESS_CONTINUE; if (isCommentOnSameLine(node) @@ -169,33 +169,29 @@ public class ASTCommenter { } /** - * Creates a NodeCommentMap for the given TranslationUnit. This is the only way - * to get a NodeCommentMap which contains all the comments mapped against nodes. + * Creates a NodeCommentMap for the given AST. This is the only way to get a NodeCommentMap + * which contains all the comments mapped against nodes. * - * @param tu TranslationUnit + * @param ast the AST * @return NodeCommentMap */ - public static NodeCommentMap getCommentedNodeMap(IASTTranslationUnit tu){ + public static NodeCommentMap getCommentedNodeMap(IASTTranslationUnit ast) { NodeCommentMap commentMap = new NodeCommentMap(); - if (tu == null) { + if (ast == null) { return commentMap; } - IASTComment[] commentsArray = tu.getComments(); - if (commentsArray == null) { - return commentMap; - } - List<IASTComment> comments = filterNonTuComments(commentsArray); - return addCommentsToCommentMap(tu, comments); - } - - private static List<IASTComment> filterNonTuComments(IASTComment[] comments) { - List<IASTComment> filtered = new ArrayList<IASTComment>(comments.length); - for (IASTComment comment : comments) { + IASTComment[] commentsArray = ast.getComments(); + List<IASTComment> comments = new ArrayList<IASTComment>(commentsArray.length); + for (IASTComment comment : commentsArray) { if (comment.isPartOfTranslationUnitFile()) { - filtered.add(comment); + comments.add(comment); } } - return filtered; + assignPreprocessorComments(commentMap, comments, ast); + CommentHandler commentHandler = new CommentHandler(comments); + ASTCommenterVisitor commenter = new ASTCommenterVisitor(commentHandler, commentMap); + ast.accept(commenter); + return commentMap; } private static boolean isCommentDirectlyBeforePreprocessorStatement(IASTComment comment, @@ -204,11 +200,11 @@ public class ASTCommenter { return true; } IASTFileLocation commentLocation = comment.getFileLocation(); - int preprcessorOffset = statement.getFileLocation().getNodeOffset(); - if (preprcessorOffset > commentLocation.getNodeOffset()) { - PreprocessorRangeChecker vister = new PreprocessorRangeChecker(preprcessorOffset, commentLocation); - tu.accept(vister); - return vister.isPreStatementComment; + int preprocessorOffset = statement.getFileLocation().getNodeOffset(); + if (preprocessorOffset > commentLocation.getNodeOffset()) { + PreprocessorRangeChecker visitor = new PreprocessorRangeChecker(preprocessorOffset, commentLocation); + tu.accept(visitor); + return visitor.isPreStatementComment; } return false; } @@ -218,22 +214,7 @@ public class ASTCommenter { } /** - * Puts leading and training comments to the returned map and removes them from - * the {@code comments} list. - */ - private static NodeCommentMap addCommentsToCommentMap(IASTTranslationUnit tu, - List<IASTComment> comments) { - NodeCommentMap commentMap = new NodeCommentMap(); - CommentHandler commHandler = new CommentHandler(comments); - - assignPreprocessorComments(commentMap, comments, tu); - ASTCommenterVisitor commenter = new ASTCommenterVisitor(commHandler, commentMap); - tu.accept(commenter); - return commentMap; - } - - /** - * Puts leading and training comments to {@code commentMap} and removes them from + * Puts leading and trailing comments to {@code commentMap} and removes them from * the {@code comments} list. */ private static void assignPreprocessorComments(NodeCommentMap commentMap, diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenterVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenterVisitor.java index a8a97e9dbb8..030b99f16d5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenterVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/ASTCommenterVisitor.java @@ -39,7 +39,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier * @author Guido Zgraggen IFS */ public class ASTCommenterVisitor extends ASTVisitor { - protected CommentHandler commHandler; + protected CommentHandler commentHandler; protected NodeCommentMap commentMap; private NodeCommenter nodeCommenter; @@ -61,14 +61,14 @@ public class ASTCommenterVisitor extends ASTVisitor { shouldVisitTranslationUnit = true; } - public ASTCommenterVisitor(CommentHandler commHandler, NodeCommentMap commentMap) { - this.commHandler = commHandler; + public ASTCommenterVisitor(CommentHandler commentHandler, NodeCommentMap commentMap) { + this.commentHandler = commentHandler; this.commentMap = commentMap; init(); } private void init() { - nodeCommenter = new NodeCommenter(this, commHandler, commentMap); + nodeCommenter = new NodeCommenter(this, commentHandler, commentMap); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/NodeCommenter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/NodeCommenter.java index ec0d9f9afc8..589a67b2510 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/NodeCommenter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/commenthandler/NodeCommenter.java @@ -62,13 +62,13 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTWhileStatement; */ public class NodeCommenter { protected ASTVisitor visitor; - protected CommentHandler commHandler; + protected CommentHandler commentHandler; protected NodeCommentMap commentMap; protected List<IASTNode> children; public NodeCommenter(ASTVisitor visitor, CommentHandler commHandler, NodeCommentMap commentMap) { this.visitor = visitor; - this.commHandler = commHandler; + this.commentHandler = commHandler; this.commentMap = commentMap; this.children = new ArrayList<IASTNode>(); } @@ -122,17 +122,17 @@ public class NodeCommenter { private void addLeadingCommentToMap(ASTNode node, IASTComment comment) { commentMap.addLeadingCommentToNode(node, comment); - commHandler.allreadyAdded(comment); + commentHandler.allreadyAdded(comment); } private void addTrailingCommentToMap(ASTNode node, IASTComment comment) { commentMap.addTrailingCommentToNode(node, comment); - commHandler.allreadyAdded(comment); + commentHandler.allreadyAdded(comment); } private void addFreestandingCommentToMap(ASTNode node, IASTComment comment) { commentMap.addFreestandingCommentToNode(node, comment); - commHandler.allreadyAdded(comment); + commentHandler.allreadyAdded(comment); } private boolean isTrailing(ASTNode node, ASTNode com, int nodeLineNumber, int commentLineNumber) { @@ -200,8 +200,8 @@ public class NodeCommenter { } protected int appendComments(ASTNode node) { - while (commHandler.hasMore()) { - IASTComment comment = commHandler.getFirst(); + while (commentHandler.hasMore()) { + IASTComment comment = commentHandler.getFirst(); if (isNotSameFile(node, comment)) { return ASTVisitor.PROCESS_SKIP; @@ -215,8 +215,8 @@ public class NodeCommenter { } protected int appendFreestandingComments(ASTNode node) { - while (commHandler.hasMore()) { - IASTComment comment = commHandler.getFirst(); + while (commentHandler.hasMore()) { + IASTComment comment = commentHandler.getFirst(); if (isNotSameFile(node, comment)) { return ASTVisitor.PROCESS_SKIP; @@ -234,9 +234,9 @@ public class NodeCommenter { } public void appendRemainingComments(IASTDeclaration declaration) { - while (commHandler.hasMore()) { - IASTComment comment = commHandler.getFirst(); - if (appendComment((ASTNode)declaration, comment)) { + while (commentHandler.hasMore()) { + IASTComment comment = commentHandler.getFirst(); + if (appendComment((ASTNode) declaration, comment)) { continue; } addFreestandingCommentToMap((ASTNode) declaration, comment); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorNode.java index 43bc89e7012..993acd2402a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorNode.java @@ -113,6 +113,7 @@ abstract class ASTPreprocessorNode extends ASTNode { class ASTComment extends ASTPreprocessorNode implements IASTComment { private final boolean fIsBlockComment; private String fFilePath; + public ASTComment(IASTTranslationUnit parent, String filePath, int offset, int endOffset, boolean isBlockComment) { super(parent, IASTTranslationUnit.PREPROCESSOR_STATEMENT, offset, endOffset); fIsBlockComment= isBlockComment; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java index 66382144eba..6d6518d4200 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java @@ -68,8 +68,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; /** - * C-Preprocessor providing tokens for the parsers. The class should not be used directly, rather than that - * you should be using the {@link IScanner} interface. + * C-Preprocessor providing tokens for the parsers. The class should not be used directly, + * rather than that you should be using the {@link IScanner} interface. * @since 5.0 */ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable { @@ -87,8 +87,7 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable { private static final char[] ONE = "1".toCharArray(); //$NON-NLS-1$ - - // standard built-ins + // Standard built-ins private static final ObjectStyleMacro __CDT_PARSER__= new ObjectStyleMacro("__CDT_PARSER__".toCharArray(), ONE); //$NON-NLS-1$ private static final ObjectStyleMacro __cplusplus = new ObjectStyleMacro("__cplusplus".toCharArray(), ONE); //$NON-NLS-1$ private static final ObjectStyleMacro __STDC__ = new ObjectStyleMacro("__STDC__".toCharArray(), ONE); //$NON-NLS-1$ @@ -374,7 +373,7 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable { return fLocationMap; } - private void configureKeywords(ParserLanguage language, IScannerExtensionConfiguration configuration) { + private void configureKeywords(ParserLanguage language, IScannerExtensionConfiguration configuration) { Keywords.addKeywordsPreprocessor(fPPKeywords); if (language == ParserLanguage.C) { Keywords.addKeywordsC(fKeywords); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeGuardDetection.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeGuardDetection.java index 2674e80e36a..cdd034e83f8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeGuardDetection.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IncludeGuardDetection.java @@ -6,9 +6,8 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Markus Schorn - initial API and implementation + * Markus Schorn - initial API and implementation *******************************************************************************/ - package org.eclipse.cdt.internal.core.parser.scanner; import static org.eclipse.cdt.core.parser.OffsetLimitReachedException.ORIGIN_PREPROCESSOR_DIRECTIVE; @@ -39,7 +38,7 @@ public class IncludeGuardDetection { Token t = l.nextToken(); if (t.getType() == IToken.tIDENTIFIER) { char[] guard= null; - switch(ppKeywords.get(t.getCharImage())) { + switch (ppKeywords.get(t.getCharImage())) { case IPreprocessorDirective.ppIfndef: // #ifndef GUARD t= l.nextToken(); @@ -98,7 +97,7 @@ public class IncludeGuardDetection { Token t= l.nextDirective(); if (t.getType() == IToken.tEND_OF_INPUT) return true; - switch(ppKeywords.get(l.nextToken().getCharImage())) { + switch (ppKeywords.get(l.nextToken().getCharImage())) { case IPreprocessorDirective.ppIf: case IPreprocessorDirective.ppIfdef: case IPreprocessorDirective.ppIfndef: @@ -124,7 +123,6 @@ public class IncludeGuardDetection { return t; } - public static boolean detectIncludeEndif(Lexer l) { l.saveState(); try { |