From 552b75eb267af884875eaead18881f34cf133de3 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 18 Nov 2004 18:38:32 +0000 Subject: [PATCH] Patch for Devin Steffler. Fixed 77009 - ASTUtil#getType ignores volatile --- .../cdt/core/parser/tests/CompleteParseASTTest.java | 11 +++++++++++ .../org/eclipse/cdt/core/parser/ast/ASTUtil.java | 2 ++ 2 files changed, 13 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index e6d0d82376d..a4e1675073e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -19,7 +19,9 @@ import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.ASTPointerOperator; +import org.eclipse.cdt.core.parser.ast.ASTUtil; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; +import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration; import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassReference; @@ -2341,5 +2343,14 @@ public class CompleteParseASTTest extends CompleteParseBaseTest writer.write("temp = (TYPE*)(pType + 1); /* Parser error is here */\n}\n"); //$NON-NLS-1$ parse(writer.toString()); } + + public void testBug77009() throws Exception + { + Iterator i = parse("int foo(volatile int &);\n").getDeclarations(); //$NON-NLS-1$ + IASTFunction foo = (IASTFunction) i.next(); + Iterator parms = foo.getParameters(); + IASTParameterDeclaration blank = (IASTParameterDeclaration)parms.next(); + assertEquals( ASTUtil.getType( (IASTAbstractDeclaration)blank ), "volatile int&" ); //$NON-NLS-1$ + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTUtil.java index 54098ff8e2a..5602b5aa215 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTUtil.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTUtil.java @@ -127,6 +127,8 @@ public class ASTUtil { if(declaration.isConst()) type.append("const "); //$NON-NLS-1$ + if(declaration.isVolatile()) + type.append("volatile "); //$NON-NLS-1$ IASTTypeSpecifier typeSpecifier = declaration.getTypeSpecifier(); if(typeSpecifier instanceof IASTElaboratedTypeSpecifier){ IASTElaboratedTypeSpecifier elab = (IASTElaboratedTypeSpecifier) typeSpecifier;