From 7e62df880f4271f2585e5e1a1e7758493c3b8573 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Wed, 9 Apr 2003 21:12:09 +0000 Subject: [PATCH] Patch for John Camelon: CORE Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). Moved all the files in parser.util directory to the dom. Organized imports. Fixed bug36250 Parser ignores functions with default parameters that have no name. Fixed bug36240 Parser incorrectly parses operator= Fixed bug36254 Parser doesn't recognize unsigned as a type by itself. TESTS Organized imports. Added DOMTests::testTemplateDeclarationOfMethod(). Added DOMTests::testBug36250(). Added DOMTests::testBug36240(). Added DOMTests::testBug36254(). --- .../internal/core/dom}/AccessSpecifier.java | 2 +- .../cdt/internal/core/dom/BaseSpecifier.java | 3 - .../cdt/internal/core/dom}/ClassKey.java | 2 +- .../cdt/internal/core/dom/ClassSpecifier.java | 3 - .../core/dom/ConstructorChainElement.java | 1 - .../cdt/internal/core/dom/DOMBuilder.java | 4 - .../cdt/internal/core/dom/DeclSpecifier.java | 343 ++++++ .../cdt/internal/core/dom/Declarator.java | 2 - .../core/dom/ElaboratedTypeSpecifier.java | 2 - .../core/dom/EnumerationSpecifier.java | 1 - .../core/dom/EnumeratorDefinition.java | 1 - .../internal/core/dom/ExceptionSpecifier.java | 1 - .../eclipse/cdt/internal/core/dom}/Name.java | 2 +- .../core/dom/NamespaceDefinition.java | 1 - .../core/dom/ParameterDeclaration.java | 1 - .../internal/core/dom/SimpleDeclaration.java | 2 - .../internal/core/dom/TemplateParameter.java | 1 - .../internal/core/dom/UsingDeclaration.java | 1 - .../cdt/internal/core/dom/UsingDirective.java | 1 - core/org.eclipse.cdt.core/parser/ChangeLog | 8 + .../internal/core/model/CModelBuilder.java | 4 +- .../cdt/internal/core/model/Declarator.java | 99 -- .../core/model/EnumerationWrapper.java | 82 -- .../core/model/EnumeratorWrapper.java | 69 -- .../internal/core/model/ICElementWrapper.java | 19 - .../internal/core/model/NamespaceWrapper.java | 78 -- .../internal/core/model/NewModelBuilder.java | 979 ------------------ .../cdt/internal/core/model/Parameter.java | 52 - .../internal/core/model/PointerOperator.java | 86 -- .../core/model/SimpleDeclarationWrapper.java | 447 -------- .../core/model/TranslationUnitWrapper.java | 42 - .../cdt/internal/core/parser/Declaration.java | 1 - .../cdt/internal/core/parser/Parser.java | 89 +- .../core/parser/ParserSymbolTable.java | 1 - .../core/parser/{util => }/TypeInfo.java | 4 +- .../core/parser/util/DeclSpecifier.java | 252 ----- core/org.eclipse.cdt.ui.tests/ChangeLog | 9 + .../cdt/core/model/tests/ArchiveTests.java | 19 +- .../cdt/core/model/tests/BinaryTests.java | 18 +- .../cdt/core/model/tests/CModelTests.java | 17 +- .../model/tests/TranslationUnitTests.java | 21 +- .../cdt/core/parser/tests/DOMTests.java | 103 +- .../parser/tests/ParserSymbolTableTest.java | 2 +- 43 files changed, 600 insertions(+), 2275 deletions(-) rename core/org.eclipse.cdt.core/{parser/org/eclipse/cdt/internal/core/parser/util => dom/org/eclipse/cdt/internal/core/dom}/AccessSpecifier.java (95%) rename core/org.eclipse.cdt.core/{parser/org/eclipse/cdt/internal/core/parser/util => dom/org/eclipse/cdt/internal/core/dom}/ClassKey.java (95%) create mode 100644 core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java rename core/org.eclipse.cdt.core/{parser/org/eclipse/cdt/internal/core/parser/util => dom/org/eclipse/cdt/internal/core/dom}/Name.java (95%) delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Declarator.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumerationWrapper.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumeratorWrapper.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/ICElementWrapper.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NamespaceWrapper.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Parameter.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/PointerOperator.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/TranslationUnitWrapper.java rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/{util => }/TypeInfo.java (98%) delete mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/AccessSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/AccessSpecifier.java similarity index 95% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/AccessSpecifier.java rename to core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/AccessSpecifier.java index df69b25404c..95f2a0c552d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/AccessSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/AccessSpecifier.java @@ -10,7 +10,7 @@ * Contributors: * Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.internal.core.parser.util; +package org.eclipse.cdt.internal.core.dom; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java index ebb759cabb4..a2308dcb2b4 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java @@ -1,8 +1,5 @@ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author dschaefe diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/ClassKey.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassKey.java similarity index 95% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/ClassKey.java rename to core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassKey.java index ad15f37c3aa..21d4b57a47c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/ClassKey.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassKey.java @@ -10,7 +10,7 @@ * Contributors: * Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.internal.core.parser.util; +package org.eclipse.cdt.internal.core.dom; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java index ff8a031a0ae..411fae358b1 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java @@ -5,9 +5,6 @@ import java.util.LinkedList; import java.util.List; import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.Name; public class ClassSpecifier extends TypeSpecifier implements IScope, IOffsetable { diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java index 8093272fd86..dbbdda1dd1e 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java @@ -16,7 +16,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java index b914a232a84..75d0d188654 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java @@ -3,10 +3,6 @@ package org.eclipse.cdt.internal.core.dom; import org.eclipse.cdt.internal.core.parser.IParserCallback; import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * This is the parser callback that creates objects in the DOM. diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java new file mode 100644 index 00000000000..8a6f8230a93 --- /dev/null +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java @@ -0,0 +1,343 @@ +package org.eclipse.cdt.internal.core.dom; + +import java.util.List; + +import org.eclipse.cdt.internal.core.parser.Token; + +/** + * @author jcamelon + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class DeclSpecifier { + + // DeclSpecifier layed out as bit array + // leftmost 5 bits are type + public static final int typeMask = 0x001f; + public static final int isAuto = 0x0020; + public static final int isRegister = 0x0040; + public static final int isStatic = 0x0080; + public static final int isExtern = 0x0100; + public static final int isMutable = 0x0200; + public static final int isInline = 0x0400; + public static final int isVirtual = 0x0800; + public static final int isExplicit = 0x1000; + public static final int isTypedef = 0x2000; + public static final int isFriend = 0x4000; + public static final int isConst = 0x8000; + public static final int isVolatile = 0x10000; + public static final int isUnsigned = 0x20000; + public static final int isShort = 0x40000; + public static final int isLong = 0x80000; + + private int declSpecifierSeq = 0; + public int getDeclSpecifierSeq() { + return declSpecifierSeq; + } + + // Convenience methods + private void setBit(boolean b, int mask) { + if (b) + declSpecifierSeq = declSpecifierSeq | mask; + else + declSpecifierSeq = declSpecifierSeq & ~mask; + } + + private boolean checkBit(int mask) { + int masked = (declSpecifierSeq & mask); + return (masked != 0); + } + + public void setAuto(boolean b) { + setBit(b, isAuto); + } + public boolean isAuto() { + return checkBit(isAuto); + } + + public void setRegister(boolean b) { + setBit(b, isRegister); + } + public boolean isRegister() { + return checkBit(isRegister); + } + + public void setStatic(boolean b) { + setBit(b, isStatic); + } + public boolean isStatic() { + return checkBit(isStatic); + } + + public void setExtern(boolean b) { + setBit(b, isExtern); + } + public boolean isExtern() { + return checkBit(isExtern); + } + + public void setMutable(boolean b) { + setBit(b, isMutable); + } + public boolean isMutable() { + return checkBit(isMutable); + } + + public void setInline(boolean b) { + setBit(b, isInline); + } + public boolean isInline() { + return checkBit(isInline); + } + + public void setVirtual(boolean b) { + setBit(b, isVirtual); + } + public boolean isVirtual() { + return checkBit(isVirtual); + } + + public void setExplicit(boolean b) { + setBit(b, isExplicit); + } + public boolean isExplicit() { + return checkBit(isExplicit); + } + + public void setTypedef(boolean b) { + setBit(b, isTypedef); + } + public boolean isTypedef() { + return checkBit(isTypedef); + } + + public void setFriend(boolean b) { + setBit(b, isFriend); + } + public boolean isFriend() { + return checkBit(isFriend); + } + + public void setConst(boolean b) { + setBit(b, isConst); + } + public boolean isConst() { + return checkBit(isConst); + } + + public void setVolatile(boolean b) { + setBit(b, isVolatile); + } + public boolean isVolatile() { + return checkBit(isVolatile); + } + + public void setUnsigned(boolean b) { + setBit(b, isUnsigned); + } + public boolean isUnsigned() { + return checkBit(isUnsigned); + } + + public void setShort(boolean b) { + setBit(b, isShort); + } + public boolean isShort() { + return checkBit(isShort); + } + + public void setLong(boolean b) { + setBit(b, isLong); + } + public boolean isLong() { + return checkBit(isLong); + } + + // Simple Types + public static final int t_type = 0; // Type Specifier + public static final int t_char = 1; + public static final int t_wchar_t = 2; + public static final int t_bool = 3; + public static final int t_int = 4; + public static final int t_float = 5; + public static final int t_double = 6; + public static final int t_void = 7; + + public void setType(Token token) { + switch (token.getType()) { + case Token.t_auto : + setAuto(true); + break; + case Token.t_register : + setRegister(true); + break; + case Token.t_static : + setStatic(true); + break; + case Token.t_extern : + setExtern(true); + break; + case Token.t_mutable : + setMutable(true); + break; + case Token.t_inline : + setInline(true); + break; + case Token.t_virtual : + setVirtual(true); + break; + case Token.t_explicit : + setExplicit(true); + break; + case Token.t_typedef : + setTypedef(true); + break; + case Token.t_friend : + setFriend(true); + break; + case Token.t_const : + setConst(true); + break; + case Token.t_volatile : + setVolatile(true); + break; + case Token.t_char : + setType(DeclSpecifier.t_char); + break; + case Token.t_wchar_t : + setType(DeclSpecifier.t_wchar_t); + break; + case Token.t_bool : + setType(DeclSpecifier.t_bool); + break; + case Token.t_short : + setShort(true); + break; + case Token.t_int : + setType(DeclSpecifier.t_int); + break; + case Token.t_long : + setLong(true); + break; + case Token.t_signed : + setUnsigned(false); + break; + case Token.t_unsigned : + setUnsigned(true); + break; + case Token.t_float : + setType(DeclSpecifier.t_float); + break; + case Token.t_double : + setType(DeclSpecifier.t_double); + break; + case Token.t_void : + setType(DeclSpecifier.t_void); + break; + case Token.tIDENTIFIER : + setType(DeclSpecifier.t_type); + break; + } + + } + + public void setType(int t) { + declSpecifierSeq = declSpecifierSeq & ~typeMask | t; + } + + public int getType() { + return declSpecifierSeq & typeMask; + } + + public interface Container { + + public DeclSpecifier getDeclSpecifier(); + + public void setDeclSpecifier(DeclSpecifier in); + + public void addDeclarator(Object declarator); + public void removeDeclarator(Object declarator); + public List getDeclarators(); + + }; + + Name name = null; + + /** + * Returns the name. + * @return Name + */ + public Name getName() { + return name; + } + + /** + * Sets the name. + * @param name The name to set + */ + public void setName(Name name) { + this.name = name; + } + + /** + * Returns the type as a String + * @return String + */ + public String getTypeName() { + StringBuffer type = new StringBuffer(); + switch (getType()) { + case t_char : + if (isUnsigned()) + type.append("unsigned "); + type.append("char"); + break; + case t_wchar_t : + if (isUnsigned()) + type.append("unsigned "); + type.append("wchar_t"); + break; + case t_bool : + type.append("bool"); + break; + case t_int : + if (isUnsigned()) + type.append("unsigned "); + if (isShort()) + type.append("short "); + if (isLong()) + type.append("long "); + type.append("int"); + break; + case t_float : + type.append("float"); + break; + case t_double : + if (isLong()) + type.append("long "); + type.append("double"); + break; + case t_void : + type.append("void"); + break; + case t_type : + if (getName() != null) + type.append(getName().toString()); + else { + if (isUnsigned()) + type.append("unsigned"); + if (isShort()) + type.append("short"); + if (isLong()) + type.append("long"); + } + break; + default : + return ""; + } + return type.toString(); + } + +} diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java index 37418c68a56..e2299f5c2b3 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java @@ -4,8 +4,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; -import org.eclipse.cdt.internal.core.parser.util.Name; public class Declarator implements IExpressionOwner { diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java index 64c2f315158..bad26a37971 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java @@ -1,7 +1,5 @@ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java index 364efbcfdb1..72f9872ff2f 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java @@ -17,7 +17,6 @@ import java.util.Collections; import java.util.List; import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java index e2d13776ac9..badccc44f12 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java @@ -12,7 +12,6 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java index e8f78de5e50..101b685da7f 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java @@ -16,7 +16,6 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Name.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Name.java similarity index 95% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Name.java rename to core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Name.java index 8810b3ee2b3..f3d379d4da3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Name.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Name.java @@ -1,4 +1,4 @@ -package org.eclipse.cdt.internal.core.parser.util; +package org.eclipse.cdt.internal.core.dom; import org.eclipse.cdt.internal.core.parser.Token; diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java index 12cc8a82360..fa5ed0e17b4 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java @@ -17,7 +17,6 @@ import java.util.LinkedList; import java.util.List; import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java index f41da5ba0aa..78d0b565f36 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java @@ -4,7 +4,6 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; /** diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java index e2c7a37e355..dffed466f62 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java @@ -4,8 +4,6 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; public class SimpleDeclaration extends Declaration implements DeclSpecifier.Container, IOffsetable, TypeSpecifier.IOwner { diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java index cc7a583606d..4182fe43637 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java @@ -12,7 +12,6 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java index 4b0504306b2..14b5ee65037 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java @@ -12,7 +12,6 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java index f57d6699d99..3521bb624d9 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java @@ -12,7 +12,6 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.dom; -import org.eclipse.cdt.internal.core.parser.util.Name; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index d646b9d6b44..97148b30d86 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,11 @@ +2003-04-09 John Camelon + Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). + Moved all the files in parser.util directory to the dom. + Organized imports. + Fixed bug36250 Parser ignores functions with default parameters that have no name. + Fixed bug36240 Parser incorrectly parses operator= + Fixed bug36254 Parser doesn't recognize unsigned as a type by itself. + 2003-04-09 John Camelon Added timing printout for CModelTests. Provided partial fix for bug36255 to get past infinite loop, will leave defect open. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java index c331a7ab740..f3c04216e4f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -20,8 +20,10 @@ import org.eclipse.cdt.core.model.INamespace; import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.internal.core.dom.ClassKey; import org.eclipse.cdt.internal.core.dom.ClassSpecifier; import org.eclipse.cdt.internal.core.dom.DOMBuilder; +import org.eclipse.cdt.internal.core.dom.DeclSpecifier; import org.eclipse.cdt.internal.core.dom.Declaration; import org.eclipse.cdt.internal.core.dom.Declarator; import org.eclipse.cdt.internal.core.dom.ElaboratedTypeSpecifier; @@ -39,8 +41,6 @@ import org.eclipse.cdt.internal.core.dom.TranslationUnit; import org.eclipse.cdt.internal.core.dom.TypeSpecifier; import org.eclipse.cdt.internal.core.parser.Parser; import org.eclipse.cdt.internal.core.parser.ParserException; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; public class CModelBuilder { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Declarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Declarator.java deleted file mode 100644 index 5d6facdf5f9..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Declarator.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.cdt.internal.core.parser.util.Name; - -/** - * @author jcamelon - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class Declarator { - - private Name name; - private boolean isConst = false; - private boolean isVolatile = false; - /** - * Returns the name. - * @return Name - */ - public Name getName() { - return name; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - private List parameterDeclarationClause = null; - - /** - * Returns the parameterDeclarationClause. - * @return List - */ - public List getParameterDeclarationClause() { - return parameterDeclarationClause; - } - - /** - * Sets the parameterDeclarationClause. - * @param parameterDeclarationClause The parameterDeclarationClause to set - */ - public void setParameterDeclarationClause(List parameterDeclarationClause) { - this.parameterDeclarationClause = parameterDeclarationClause; - } - - private List pointerOperators = new ArrayList(); - - /** - * @return List - */ - public List getPointerOperators() { - return pointerOperators; - } - - public void addPointerOperator( PointerOperator po ) - { - pointerOperators.add( po ); - } - - /** - * @return boolean - */ - public boolean isConst() { - return isConst; - } - - /** - * Sets the isConst. - * @param isConst The isConst to set - */ - public void setConst(boolean isConst) { - this.isConst = isConst; - } - - /** - * @return boolean - */ - public boolean isVolatile() { - return isVolatile; - } - - /** - * Sets the isVolatile. - * @param isVolatile The isVolatile to set - */ - public void setVolatile(boolean isVolatile) { - this.isVolatile = isVolatile; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumerationWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumerationWrapper.java deleted file mode 100644 index d34fefba607..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumerationWrapper.java +++ /dev/null @@ -1,82 +0,0 @@ -/********************************************************************** - * Created on Apr 1, 2003 - * - * Copyright (c) 2002,2003 Rational Software Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * Rational Software - Initial API and implementation -***********************************************************************/ -package org.eclipse.cdt.internal.core.model; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.cdt.core.model.IParent; -import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.Name; - -/** - * @author jcamelon - * - */ -public class EnumerationWrapper { - - private Name name; - private List enumerators = new ArrayList(); - private final IParent parent; - private final Token key; - - public EnumerationWrapper( IParent incoming, Token enumKey ) - { - this.parent= incoming; - key = enumKey; - } - - /** - * @return Name - */ - public Name getName() { - return name; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - - - /** - * @return List - */ - public List getEnumerators() { - return enumerators; - } - - public void addEnumerator( EnumeratorWrapper in ) - { - enumerators.add( in ); - } - - /** - * @return ICElementWrapper - */ - public IParent getParent() { - return parent; - } - - /** - * @return Token - */ - public Token getClassKind() { - return key; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumeratorWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumeratorWrapper.java deleted file mode 100644 index 0c9adc70101..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/EnumeratorWrapper.java +++ /dev/null @@ -1,69 +0,0 @@ -/********************************************************************** - * Created on Apr 1, 2003 - * - * Copyright (c) 2002,2003 Rational Software Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * Rational Software - Initial API and implementation -***********************************************************************/ -package org.eclipse.cdt.internal.core.model; - -import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.Name; - -/** - * @author jcamelon - * - */ -public class EnumeratorWrapper { - - private final EnumerationWrapper parent; - private Name name; - private Token lastToken = null; - - EnumeratorWrapper( EnumerationWrapper myParent ) - { - this.parent = myParent; - } - - /** - * @return Name - */ - public Name getName() { - return name; - } - - /** - * @return EnumerationWrapper - */ - public EnumerationWrapper getParent() { - return parent; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - /** - * @return - */ - public Token getLastToken() { - return lastToken; - } - - /** - * @param token - */ - public void setLastToken(Token token) { - lastToken = token; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/ICElementWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/ICElementWrapper.java deleted file mode 100644 index a2964472fbe..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/ICElementWrapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.IParent; - -/** - * @author jcamelon - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public interface ICElementWrapper { - - public ICElement getElement(); - public void setElement (ICElement item); - public IParent getParent(); -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NamespaceWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NamespaceWrapper.java deleted file mode 100644 index f9e1643c504..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NamespaceWrapper.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.IParent; -import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.Name; - -/********************************************************************** - * Created on Apr 1, 2003 - * - * Copyright (c) 2002,2003 Rational Software Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * Rational Software - Initial API and implementation -***********************************************************************/ -public class NamespaceWrapper implements ICElementWrapper{ - private Name name; - private final IParent parent; - private ICElement element; - private Token firstToken; - - public NamespaceWrapper( IParent incoming, Token namespace) - { - this.parent= incoming; - firstToken = namespace; - } - - /** - * Returns the name. - * @return Name - */ - public Name getName() { - return name; - } - - /** - * Returns the parent. - * @return IParent - */ - public IParent getParent() { - return parent; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - /** - * @see org.eclipse.cdt.internal.core.model.ICElementWrapper#getElement() - */ - public ICElement getElement() { - return element; - } - - /** - * @see org.eclipse.cdt.internal.core.model.ICElementWrapper#setElement(org.eclipse.cdt.core.model.IParent) - */ - public void setElement(ICElement item) { - element = item; - } - - /** - * @return - */ - public Token getFirstToken() { - return firstToken; - } - - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java deleted file mode 100644 index 57fb069072e..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java +++ /dev/null @@ -1,979 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001 Rational Software Corp. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * Rational Software - initial implementation - ******************************************************************************/ -package org.eclipse.cdt.internal.core.model; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.IParent; -import org.eclipse.cdt.internal.core.parser.IParserCallback; -import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; -import org.eclipse.cdt.internal.core.parser.util.Name; - -public class NewModelBuilder implements IParserCallback { - - private TranslationUnitWrapper translationUnit = new TranslationUnitWrapper(); - - - public NewModelBuilder(TranslationUnit tu) { - translationUnit.setElement( tu ); - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#beginTranslationUnit() - */ - public Object translationUnitBegin() { - return translationUnit; - } - - /** - * @see org.eclipse.cdt.core.newparser.IParserCallback#beginClass(String, String) - */ - public Object classSpecifierBegin(Object container, Token classKey) { - if( container instanceof SimpleDeclarationWrapper ) - { - SimpleDeclarationWrapper c = (SimpleDeclarationWrapper)container; - - SimpleDeclarationWrapper wrapper = new SimpleDeclarationWrapper(); - wrapper.setClassKind( classKey ); - switch( classKey.getType() ) - { - case Token.t_class: - wrapper.setCurrentVisibility( AccessSpecifier.v_private ); - break; - case Token.t_struct: - case Token.t_union: - wrapper.setCurrentVisibility( AccessSpecifier.v_public ); - break; - } - - - wrapper.setParent( c.getParent() ); - - return wrapper; - } - else - return null; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#classSpecifierName() - */ - public Object classSpecifierName(Object classSpecifier) - { - if( classSpecifier instanceof SimpleDeclarationWrapper ) - { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)classSpecifier; - wrapper.setName( currName ); - } - return classSpecifier; - } - - /** - * @see org.eclipse.cdt.core.newparser.IParserCallback#endClass() - */ - public void classSpecifierEnd(Object classSpecifier, Token closingBrace) { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)classSpecifier; - Structure s = (Structure)wrapper.getElement(); - s.setPos( wrapper.getClassKind().getOffset(), - wrapper.getClassKind().getDelta( closingBrace )); - } - - /** - * @see org.eclipse.cdt.core.newparser.IParserCallback#beginDeclarator() - */ - public Object declaratorBegin(Object container) { - DeclSpecifier.Container declSpec = (DeclSpecifier.Container)container; - List declarators = declSpec.getDeclarators(); - Declarator declarator =new Declarator(); - declarators.add( declarator ); - return declarator; - } - - - private int startIdPos; - private int idLength; - - private CElement elem; - - /** - * @see org.eclipse.cdt.core.newparser.IParserCallback#endDeclarator() - */ - public void declaratorEnd( Object declarator) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#beginFunctionBody() - */ - public Object functionBodyBegin(Object declaration) { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)declaration; - wrapper.setFunctionDefinition(true); - return null; - } - - /** - * @see org.eclipse.cdt.core.newparser.IParserCallback#macro(String) - */ - public void macro(String macroName, int offset, int macroBeginOffset, int macroEndOffset) { - Macro elem = new Macro((TranslationUnit)translationUnit.getElement(), macroName); - elem.setIdPos(offset, macroName.length()); - elem.setPos(macroBeginOffset, macroEndOffset - macroBeginOffset); - - ((TranslationUnit)translationUnit.getElement()).addChild(elem); - } - - private int startPos; - - /** - * @see -org.eclipse.cdt.internal.core.newparser.IParserCallback#beginSimpleDeclaration(Token) - */ - public Object simpleDeclarationBegin(Object container, Token firstToken) { - ICElementWrapper wrapper = (ICElementWrapper)container; - // Assuming that the parent is the container's element - IParent parent = (IParent)wrapper.getElement(); - SimpleDeclarationWrapper result = new SimpleDeclarationWrapper(); - result.setParent( parent ); - result.setFirst( firstToken ); - // A special case to transfere the visibility - if( wrapper instanceof SimpleDeclarationWrapper ){ - result.setCurrentVisibility(((SimpleDeclarationWrapper)wrapper).getCurrentVisibility()); - } - return result; - } - - - - /** - * @see org.eclipse.cdt.internal.core.newmparser.IParserCallback#beginInclusion(String) - */ - public void inclusionBegin(String includeFile, int offset, int inclusionBeginOffset) { - Include elem = new Include(((TranslationUnit)translationUnit.getElement()), includeFile); - ((TranslationUnit)translationUnit.getElement()).addChild(elem); - elem.setIdPos(offset, includeFile.length()); - elem.setPos(inclusionBeginOffset, inclusionBeginOffset - offset + includeFile.length() + 1 ); - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#endInclusion() - */ - public void inclusionEnd() { - } - - private Name currName; - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#nameBegin(org.eclipse.cdt.internal.core.newparser.Token) - */ - public void nameBegin(Token firstToken) { - currName = new Name(firstToken); - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#nameEnd(org.eclipse.cdt.internal.core.newparser.Token) - */ - public void nameEnd(Token lastToken) { - currName.setEnd(lastToken); - } - - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#simpleDeclarationEnd(java.lang.Object) - */ - public void simpleDeclarationEnd(Object declaration, Token lastToken) { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)declaration; - wrapper.setLast( lastToken ); - wrapper.createElements(); - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token) - */ - public Object simpleDeclSpecifier(Object declSpec, Token specifier) { - DeclSpecifier declSpecifier = (DeclSpecifier)declSpec; - declSpecifier.setType( specifier ); - return declSpecifier; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorId(java.lang.Object) - */ - public Object declaratorId(Object declarator) { - Declarator decl = (Declarator)declarator; - decl.setName( currName ); - return decl; - } - - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#argumentsBegin(java.lang.Object) - */ - public Object argumentsBegin(Object declarator) { - Declarator decl = (Declarator)declarator; - List parameterDeclarationClause = new LinkedList(); - decl.setParameterDeclarationClause( parameterDeclarationClause ); - return parameterDeclarationClause; - - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierBegin(java.lang.Object) - */ - public Object baseSpecifierBegin(Object containingClassSpec) { - return null; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierEnd(java.lang.Object) - */ - public void baseSpecifierEnd(Object baseSpecifier) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierName(java.lang.Object) - */ - public Object baseSpecifierName(Object baseSpecifier) { - return baseSpecifier; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean) - */ - public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) { - return baseSpecifier; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token) - */ - public Object baseSpecifierVisibility( Object baseSpecifier, Token visibility) - { - return null; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#expressionOperator(org.eclipse.cdt.internal.core.newparser.Token) - */ - public void expressionOperator(Object expression, Token operator) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#expressionTerminal(org.eclipse.cdt.internal.core.newparser.Token) - */ - public void expressionTerminal(Object expression, Token terminal) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#functionBodyEnd() - */ - public void functionBodyEnd(Object functionBody ) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#parameterDeclarationBegin(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token) - */ - public Object parameterDeclarationBegin( - Object container ) - { - List parameterDeclarationClause = (List)container; - Parameter p = new Parameter(); - parameterDeclarationClause.add( p ); - return p; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#parameterDeclarationEnd(java.lang.Object) - */ - public void parameterDeclarationEnd(Object declaration) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#translationUnitEnd(java.lang.Object) - */ - public void translationUnitEnd(Object unit) { - } - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#argumentsEnd() - */ - public void argumentsEnd(Object parameterDeclarationClause) { - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorAbort(java.lang.Object, java.lang.Object) - */ - public void declaratorAbort(Object container, Object declarator) { - DeclSpecifier.Container declSpec = (DeclSpecifier.Container)container; - Declarator toBeRemoved =(Declarator)declarator; - declSpec.removeDeclarator( toBeRemoved ); - toBeRemoved = null; - currName = null; - } - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#expressionBegin(java.lang.Object) - */ - public Object expressionBegin(Object container) { - return null; - } - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#expressionEnd(java.lang.Object) - */ - public void expressionEnd(Object expression) { - } - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierAbort(java.lang.Object) - */ - public void classSpecifierAbort(Object classSpecifier) { - classSpecifier = null; - } - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object) - */ - public Object classSpecifierSafe(Object classSpecifier) { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)classSpecifier; - int kind; - - switch( wrapper.getClassKind().getType() ) - { - case Token.t_class: - kind = ICElement.C_CLASS; - break; - case Token.t_struct: - kind = ICElement.C_STRUCT; - break; - default: - kind = ICElement.C_UNION; - break; - } - Structure elem = new Structure( (CElement)wrapper.getParent(), kind, null ); - wrapper.setElement( elem ); - ((Parent)wrapper.getParent()).addChild(elem); - - String elementName = ( wrapper.getName() == null ) ? "" : wrapper.getName().toString(); - elem.setElementName( elementName ); - if( wrapper.getName() != null ) - { - elem.setTypeName( wrapper.getClassKind().getImage() ); - elem.setIdPos(wrapper.getName().getStartOffset(), elementName.length()); - } - else - { - elem.setTypeName( wrapper.getClassKind().getImage() ); - elem.setIdPos(wrapper.getClassKind().getOffset(), wrapper.getClassKind().getLength()); - } - return wrapper; - } - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierBegin(java.lang.Object) - */ - public Object elaboratedTypeSpecifierBegin(Object container, Token classKey) { - if( container instanceof SimpleDeclarationWrapper ) - { - SimpleDeclarationWrapper c = (SimpleDeclarationWrapper)container; - - SimpleDeclarationWrapper wrapper = new SimpleDeclarationWrapper(); - wrapper.setClassKind( classKey ); - wrapper.setParent( c.getParent() ); - - return wrapper; - } - else - return null; - } - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierEnd(java.lang.Object) - */ - public void elaboratedTypeSpecifierEnd(Object elab) { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)elab; - } - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object) - */ - public Object elaboratedTypeSpecifierName(Object elab) { - if( elab instanceof SimpleDeclarationWrapper ) - { - SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)elab; - wrapper.setName( currName ); - } - return elab; - } - - - - /** - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object) - */ - public Object simpleDeclSpecifierName(Object declaration) { - DeclSpecifier declSpecifier = (DeclSpecifier)declaration; - declSpecifier.setName( currName ); - return declSpecifier; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#expressionAbort(java.lang.Object) - */ - public void expressionAbort(Object expression) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object classMemberVisibility(Object classSpecifier, Token visibility) { - SimpleDeclarationWrapper spec = (SimpleDeclarationWrapper)classSpecifier; - switch( visibility.getType() ) - { - case Token.t_public: - spec.setCurrentVisibility( AccessSpecifier.v_public ); - break; - case Token.t_protected: - spec.setCurrentVisibility( AccessSpecifier.v_protected ); - break; - case Token.t_private: - spec.setCurrentVisibility( AccessSpecifier.v_private ); - break; - } - return spec; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorBegin(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object pointerOperatorBegin(Object container) { - Declarator d = (Declarator)container; - PointerOperator po = new PointerOperator(d); - return po; - } - - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorEnd(java.lang.Object) - */ - public void pointerOperatorEnd(Object ptrOperator) { - PointerOperator po = (PointerOperator)ptrOperator; - po.getOwnerDeclarator().addPointerOperator( po ); - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object) - */ - public Object pointerOperatorName(Object ptrOperator) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object pointerOperatorType(Object ptrOperator, Token type) { - PointerOperator po=(PointerOperator)ptrOperator; - switch( type.getType() ) - { - case Token.tSTAR: - po.setKind( PointerOperator.k_pointer ); - break; - case Token.tAMPER: - po.setKind( PointerOperator.k_reference ); - break; - default: - } - return po; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) { - PointerOperator po=(PointerOperator)ptrOperator; - switch( modifier.getType() ) - { - case Token.t_const: - po.setConst( true ); - break; - case Token.t_volatile: - po.setVolatile( true ); - break; - default: - } - return po; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object declaratorCVModifier(Object declarator, Token modifier) { - Declarator d = (Declarator)declarator; - switch( modifier.getType() ) - { - case Token.t_const: - d.setConst( true ); - break; - case Token.t_volatile: - d.setVolatile(true); - break; - default: - break; - } - return d; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#arrayBegin(java.lang.Object) - */ - public Object arrayDeclaratorBegin(Object declarator) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#arrayEnd(java.lang.Object) - */ - public void arrayDeclaratorEnd(Object arrayQualifier ) { - // TODO Auto-generated method stub - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object) - */ - public Object declaratorThrowExceptionName(Object declarator) { - // TODO Auto-generated method stub - return declarator; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object) - */ - public Object declaratorThrowsException(Object declarator) { - // TODO Auto-generated method stub - return declarator; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationBegin(java.lang.Object) - */ - public Object namespaceDefinitionBegin(Object container, Token namespace) { - - ICElementWrapper c = (ICElementWrapper)container; - NamespaceWrapper wrapper = new NamespaceWrapper((IParent)c.getElement(), namespace); - return wrapper; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object) - */ - public Object namespaceDefinitionId(Object namespace) { - // set wrapper name to current name - NamespaceWrapper wrapper = (NamespaceWrapper)namespace; - wrapper.setName( currName ); - - // create the new element - String namespaceName = wrapper.getName().toString(); - Parent realParent = (Parent)wrapper.getParent(); - Namespace newNameSpace = new Namespace( (ICElement)realParent, namespaceName ); - wrapper.setElement(newNameSpace); - realParent.addChild( newNameSpace ); - - // set the ID position - newNameSpace.setIdPos(wrapper.getName().getStartOffset(), namespaceName.length()); - return wrapper; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationAbort(java.lang.Object) - */ - public void namespaceDefinitionAbort(Object namespace) { - namespace = null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationEnd(java.lang.Object) - */ - public void namespaceDefinitionEnd(Object namespace, Token closingBrace) { - NamespaceWrapper wrapper = (NamespaceWrapper)namespace; - Namespace celement = (Namespace)wrapper.getElement(); - celement.setPos( wrapper.getFirstToken().getOffset(), wrapper.getFirstToken().getDelta(closingBrace)); - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#linkageSpecificationBegin(java.lang.Object, java.lang.String) - */ - public Object linkageSpecificationBegin(Object container, String literal) { - // until linkageSpecs are part of the code model (do they need to be?) just return the container object - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#linkageSpecificationEnd(java.lang.Object) - */ - public void linkageSpecificationEnd(Object linkageSpec) { - // do not implement anything unless linkageSpecificationBegin does more than just return its container - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveBegin(java.lang.Object) - */ - public Object usingDirectiveBegin(Object container) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object) - */ - public Object usingDirectiveNamespaceId(Object container) { - // TODO Auto-generated method stub - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveEnd(java.lang.Object) - */ - public void usingDirectiveEnd(Object directive) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationBegin(java.lang.Object) - */ - public Object usingDeclarationBegin(Object container) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object) - */ - public Object usingDeclarationMapping(Object container, boolean isTypename) { - // TODO Auto-generated method stub - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationEnd(java.lang.Object) - */ - public void usingDeclarationEnd(Object directive) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveAbort(java.lang.Object) - */ - public void usingDirectiveAbort(Object directive) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationAbort(java.lang.Object) - */ - public void usingDeclarationAbort(Object declaration) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierBegin(java.lang.Object) - */ - public Object enumSpecifierBegin(Object container, Token enumKey) { - SimpleDeclarationWrapper c = (SimpleDeclarationWrapper)container; - EnumerationWrapper wrapper = new EnumerationWrapper(c.getParent(), enumKey ); - return wrapper; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object) - */ - public Object enumSpecifierId(Object enumSpec) { - ((EnumerationWrapper)enumSpec).setName( currName ); - return enumSpec; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierAbort(java.lang.Object) - */ - public void enumSpecifierAbort(Object enumSpec) { - enumSpec = null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierEnd(java.lang.Object) - */ - public void enumSpecifierEnd(Object enumSpec, Token closingBrace) { - EnumerationWrapper wrapper = (EnumerationWrapper)enumSpec; - - List enumerators = wrapper.getEnumerators(); - - Parent realParent = (Parent)wrapper.getParent(); - String enumName = ( wrapper.getName() == null ) ? "" : wrapper.getName().toString(); - Enumeration enumeration = new Enumeration( (ICElement)realParent, enumName ); - enumeration.setTypeName( "enum" ); - realParent.addChild( enumeration ); - - // create the list - Iterator i = enumerators.iterator(); - while( i.hasNext()) - { - EnumeratorWrapper subwrapper = (EnumeratorWrapper)i.next(); - Enumerator enumerator = new Enumerator( enumeration, subwrapper.getName().toString() ); - String enumeratorName = subwrapper.getName().toString(); - - enumerator.setIdPos(subwrapper.getName().getStartOffset(), enumeratorName.length()); - enumerator.setPos(subwrapper.getName().getStartOffset(), - subwrapper.getName().getNameStart().getDelta( subwrapper.getLastToken())); - - enumeration.addChild( enumerator ); - } - - // do the offsets - if( wrapper.getName() != null ) - { - enumeration.setIdPos(wrapper.getName().getStartOffset(), enumName.length()); - } - else - { - enumeration.setIdPos(wrapper.getClassKind().getOffset(), wrapper.getClassKind().getLength()); - } - enumeration.setPos(wrapper.getClassKind().getOffset(), wrapper.getClassKind().getDelta( closingBrace )); - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionBegin(java.lang.Object) - */ - public Object enumeratorBegin(Object enumSpec) { - EnumerationWrapper wrapper = (EnumerationWrapper)enumSpec; - EnumeratorWrapper result = new EnumeratorWrapper(wrapper); - return result; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object) - */ - public Object enumeratorId(Object enumDefn) { - EnumeratorWrapper wrapper = (EnumeratorWrapper)enumDefn; - wrapper.setName( currName ); - return wrapper; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionEnd(java.lang.Object) - */ - public void enumeratorEnd(Object enumDefn, Token lastToken) { - EnumeratorWrapper wrapper = (EnumeratorWrapper)enumDefn; - wrapper.setLastToken( lastToken ); - wrapper.getParent().addEnumerator( wrapper ); - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#asmDefinition(java.lang.String) - */ - public void asmDefinition(Object container, String assemblyCode) { - // TODO Auto-generated method stub - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainBegin(java.lang.Object) - */ - public Object constructorChainBegin(Object declarator) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainAbort(java.lang.Object) - */ - public void constructorChainAbort(Object ctor) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainEnd(java.lang.Object) - */ - public void constructorChainEnd(Object ctor) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementBegin(java.lang.Object) - */ - public Object constructorChainElementBegin(Object ctor) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementEnd(java.lang.Object) - */ - public void constructorChainElementEnd(Object element) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object) - */ - public Object constructorChainElementId(Object ctor) { - // TODO Auto-generated method stub - return ctor; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementExpressionListElementBegin(java.lang.Object) - */ - public Object constructorChainElementExpressionListElementBegin(Object element) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementExpressionListElementEnd(java.lang.Object) - */ - public void constructorChainElementExpressionListElementEnd(Object expression) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationBegin(java.lang.Object) - */ - public Object explicitInstantiationBegin(Object container) { - // until explicit-instantiations are part of the code model just return the container object - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationEnd(java.lang.Object) - */ - public void explicitInstantiationEnd(Object instantiation) { - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitSpecializationBegin(java.lang.Object) - */ - public Object explicitSpecializationBegin(Object container) { - // until explicit-specializations are part of the code model just return the container object - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitSpecializationEnd(java.lang.Object) - */ - public void explicitSpecializationEnd(Object instantiation) { - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object) - */ - public Object declaratorPureVirtual(Object declarator) { - // TODO Auto-generated method stub - return declarator; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegin(java.lang.Object, boolean) - */ - public Object templateDeclarationBegin(Object container, boolean exported) { - // until linkageSpecs are part of the code model just return the container object - return container; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationAbort(java.lang.Object) - */ - public void templateDeclarationAbort(Object templateDecl) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationEnd(java.lang.Object) - */ - public void templateDeclarationEnd(Object templateDecl) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterBegin(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token) - */ - public Object templateTypeParameterBegin(Object templDecl, Token kind) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object) - */ - public Object templateTypeParameterName(Object typeParm) { - // TODO Auto-generated method stub - return typeParm; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object) - */ - public Object templateTypeParameterInitialTypeId(Object typeParm) { - // TODO Auto-generated method stub - return typeParm; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterEnd(java.lang.Object) - */ - public void templateTypeParameterEnd(Object typeParm) { - // TODO Auto-generated method stub - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterAbort(java.lang.Object) - */ - public void templateTypeParameterAbort(Object typeParm) { - // TODO Auto-generated method stub - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorAbort(java.lang.Object) - */ - public void pointerOperatorAbort(Object ptrOperator) { - ptrOperator = null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateParameterListBegin(java.lang.Object) - */ - public Object templateParameterListBegin(Object declaration) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateParameterListEnd(java.lang.Object) - */ - public void templateParameterListEnd(Object parameterList) { - // TODO Auto-generated method stub - - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Parameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Parameter.java deleted file mode 100644 index 38173ed1451..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/Parameter.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import java.util.LinkedList; -import java.util.List; - -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; - -/** - * @author jcamelon - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class Parameter extends DeclSpecifier implements DeclSpecifier.Container -{ - DeclSpecifier declSpec = null; - - /** - * @see org.eclipse.cdt.internal.core.dom.DeclarationSpecifier.CElementWrapper#getDeclSpecifier() - */ - public DeclSpecifier getDeclSpecifier() { - if( declSpec == null ) - declSpec = new DeclSpecifier(); - - return declSpec; - } - - /** - * @see org.eclipse.cdt.internal.core.dom.DeclarationSpecifier.CElementWrapper#setDeclSpecifier(org.eclipse.cdt.internal.core.dom.DeclarationSpecifier) - */ - public void setDeclSpecifier(DeclSpecifier in) { - declSpec = in; - } - private List declarators = new LinkedList(); - - public void addDeclarator(Object declarator) { - declarators.add(declarator); - } - - public List getDeclarators() { - return declarators; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.util.DeclarationSpecifier.Container#removeDeclarator(java.lang.Object) - */ - public void removeDeclarator(Object declarator) { - declarators.remove( declarator ); - } -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/PointerOperator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/PointerOperator.java deleted file mode 100644 index e74d86978d7..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/PointerOperator.java +++ /dev/null @@ -1,86 +0,0 @@ -/********************************************************************** - * Created on Mar 31, 2003 - * - * Copyright (c) 2002,2003 Rational Software Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * Rational Software - Initial API and implementation -***********************************************************************/ -package org.eclipse.cdt.internal.core.model; - -/** - * @author jcamelon - * - */ -public class PointerOperator { - - private final Declarator ownerDeclarator; - - public PointerOperator( Declarator decl ) - { - ownerDeclarator = decl; - } - - /** - * @return Declarator - */ - public Declarator getOwnerDeclarator() { - return ownerDeclarator; - } - public static final int k_pointer = 1; - public static final int k_reference = 2; - - private boolean isConst = false; - private boolean isVolatile = false; - private int kind; - - /** - * @return boolean - */ - public boolean isConst() { - return isConst; - } - - /** - * @return boolean - */ - public boolean isVolatile() { - return isVolatile; - } - - /** - * @return int - */ - public int getKind() { - return kind; - } - - /** - * Sets the isConst. - * @param isConst The isConst to set - */ - public void setConst(boolean isConst) { - this.isConst = isConst; - } - - /** - * Sets the isVolatile. - * @param isVolatile The isVolatile to set - */ - public void setVolatile(boolean isVolatile) { - this.isVolatile = isVolatile; - } - - /** - * Sets the kind. - * @param kind The kind to set - */ - public void setKind(int kind) { - this.kind = kind; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java deleted file mode 100644 index 838e21ac1fc..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java +++ /dev/null @@ -1,447 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import java.util.LinkedList; -import java.util.List; - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.INamespace; -import org.eclipse.cdt.core.model.IParent; -import org.eclipse.cdt.core.model.IStructure; -import org.eclipse.cdt.core.model.ITranslationUnit; -import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; -import org.eclipse.cdt.internal.core.parser.util.Name; - -/** - * @author jcamelon - * - */ -public class SimpleDeclarationWrapper extends DeclSpecifier implements DeclSpecifier.Container, ICElementWrapper { - - private ICElement element = null; - private IParent parent = null; - - Token first = null, last = null; - private Name name = null; - private boolean functionDefinition = false; - - public SimpleDeclarationWrapper( IParent item ) - { - this.parent = item; - } - - public SimpleDeclarationWrapper() - { - } - - /** - * Returns the item. - * @return CElement - */ - public ICElement getElement() { - return element; - } - - /** - * Sets the item. - * @param item The item to set - */ - public void setElement (ICElement item) { - this.element = item; - } - - /** - * Returns the parent. - * @return CElement - */ - public IParent getParent() { - return parent; - } - - /** - * Sets the parent. - * @param parent The parent to set - */ - public void setParent(IParent parent) { - this.parent = parent; - } - - public void createElements() - { - // creates the appropriate C Elements - List declaratorList = getDeclarators(); - Declarator [] declarators = (Declarator []) declaratorList.toArray( new Declarator[ declaratorList.size() ] ); - CElement parentElement = (CElement)getParent(); - - for( int i = 0; i < declarators.length; ++i ) - { - Declarator currentDeclarator = declarators[i]; - CElement declaration = null; - - // instantiate the right element - List clause =currentDeclarator.getParameterDeclarationClause(); - String declaratorName = ( currentDeclarator.getName() == null ) ? "" : currentDeclarator.getName().toString(); - if( clause == null && !isTypedef()) - { - // TODO - this was to get rid of the NULL pointer we've been seeing - if (currentDeclarator.getName() == null) - return; - - // this is an attribute or a varaible - if( parentElement instanceof IStructure ) - { - declaration = createField( parentElement, declaratorName ); - } - else if(( parentElement instanceof ITranslationUnit ) - || ( parentElement instanceof INamespace )) - { - if(isExtern()) - { - declaration = createVariableDeclaration( parentElement, declaratorName ); - } - else - { - declaration = createVariable( parentElement, declaratorName ); - } - } - } - else if( isTypedef() ) - { - declaration = createTypedef( parentElement, declaratorName ); - } - else - { - Parameter [] parameters = (Parameter []) clause.toArray( new Parameter[ clause.size() ]); - // this is a function or a method - if( parentElement instanceof IStructure ) - { - if (isFunctionDefinition()) - { - declaration = createMethod( parentElement, declaratorName, parameters ); - } - else - { - declaration = createMethodDeclaration( parentElement, declaratorName, parameters ); - } - - } - else if(( parentElement instanceof ITranslationUnit ) - || ( parentElement instanceof INamespace )) - { - if (isFunctionDefinition()) - { - // if it belongs to a class, then create a method - // else create a function - // this will not be known until we have cross reference information - declaration = createFunction( parentElement, declaratorName, parameters ); - } - else - { - declaration = createFunctionDeclaration( parentElement, declaratorName, parameters ); - } - } - } - - - if( currentDeclarator.getName() != null ) - { - // hook up the offsets - declaration.setIdPos( currentDeclarator.getName().getStartOffset(), currentDeclarator.getName().length() ); - } - else - { - declaration.setIdPos( classKind.getOffset(), classKind.getImage().toString().length()); - } - - declaration.setPos( getFirst().getOffset(), getFirst().getDelta( getLast() )); - - // add to parent - parentElement.addChild( declaration ); - } - - } - - List declarators = new LinkedList(); - String [] myString; - - public void addDeclarator( Object in ) - { - declarators.add( in ); - } - - public List getDeclarators() - { - return declarators; - } - - DeclSpecifier declSpec = null; - - /** - * @see org.eclipse.cdt.internal.core.dom.DeclarationSpecifier.CElementWrapper#getDeclSpecifier() - */ - public DeclSpecifier getDeclSpecifier() { - if( declSpec == null ) - declSpec = new DeclSpecifier(); - - return declSpec; - } - - /** - * @see org.eclipse.cdt.internal.core.dom.DeclarationSpecifier.CElementWrapper#setDeclSpecifier(org.eclipse.cdt.internal.core.dom.DeclarationSpecifier) - */ - public void setDeclSpecifier(DeclSpecifier in) { - declSpec = in; - } - - /** - * @see org.eclipse.cdt.internal.core.newparser.util.DeclarationSpecifier.Container#removeDeclarator(java.lang.Object) - */ - public void removeDeclarator(Object declarator) { - declarators.remove( declarator ); - } - - /** - * Returns the name. - * @return Name - */ - public Name getName() { - return name; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - private Token classKind; - - /** - * Returns the functionDefinition. - * @return boolean - */ - public boolean isFunctionDefinition() { - return functionDefinition; - } - - /** - * Sets the functionDefinition. - * @param functionDefinition The functionDefinition to set - */ - public void setFunctionDefinition(boolean functionDefinition) { - this.functionDefinition = functionDefinition; - } - - private AccessSpecifier currentVisibility = new AccessSpecifier( AccessSpecifier.v_unknown ); - /** - * @return int - */ - public int getCurrentVisibility() { - return currentVisibility.getAccess(); - } - - /** - * Sets the currentVisibility. - * @param currentVisibility The currentVisibility to set - */ - public void setCurrentVisibility(int currentVisibility) { - this.currentVisibility.setAccess( currentVisibility ); - } - - /** - * Creates a Field and fills its info - * @param parent - * @param name - * @return CElement - */ - private CElement createField(CElement parent, String name){ - Field newElement = new Field( parent, name ); - newElement.setTypeName ( getTypeName() ); - newElement.setMutable(isMutable()); - newElement.setVisibility(this.getCurrentVisibility()); - newElement.setConst(isConst()); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - return newElement; - } - - private CElement createTypedef(CElement parent, String name){ - CElement typedef = new TypeDef( parent, name ); - return typedef; - } - - - /** - * Creates a Variable and fills its info - * @param parent - * @param name - * @return CElement - */ - private CElement createVariable(CElement parent, String name){ - Variable newElement = new Variable( parent, name ); - newElement.setTypeName ( getTypeName() ); - newElement.setConst(isConst()); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - return newElement; - } - - /** - * Creates a VariableDeclaration and fills its info - * @param parent - * @param name - * @return CElement - */ - private CElement createVariableDeclaration(CElement parent, String name){ - VariableDeclaration newElement = new VariableDeclaration( parent, name ); - newElement.setTypeName ( getTypeName() ); - newElement.setConst(isConst()); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - return newElement; - } - - - /** - * Creates a MethodDeclaration and fills its info - * @param parent - * @param name - * @param parameters - * @return CElement - */ - private CElement createMethodDeclaration(CElement parent, String name, Parameter[] parameters){ - String[] parameterTypes = new String[parameters.length]; - for( int j = 0; j< parameters.length; ++j ) - { - Parameter param = parameters[j]; - parameterTypes[j] = new String(param.getTypeName()); - } - - MethodDeclaration newElement = new MethodDeclaration( parent, name ); - newElement.setParameterTypes(parameterTypes); - newElement.setReturnType( getTypeName() ); - newElement.setVisibility(this.getCurrentVisibility()); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - newElement.setConst(isConst()); - return newElement; - } - - /** - * Creates a Method and fills its info - * @param parent - * @param name - * @param parameters - * @return CElement - */ - private CElement createMethod(CElement parent, String name, Parameter[] parameters){ - String[] parameterTypes = new String[parameters.length]; - for( int j = 0; j< parameters.length; ++j ) - { - Parameter param = parameters[j]; - parameterTypes[j] = new String(param.getTypeName()); - } - - Method newElement = new Method( parent, name ); - newElement.setParameterTypes(parameterTypes); - newElement.setReturnType( getTypeName() ); - newElement.setVisibility(this.getCurrentVisibility()); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - newElement.setConst(isConst()); - return newElement; - } - - /** - * Creates a FunctionDeclaration and fills its info - * @param parent - * @param name - * @param parameters - * @return CElement - */ - private CElement createFunctionDeclaration(CElement parent, String name, Parameter[] parameters){ - String[] parameterTypes = new String[parameters.length]; - for( int j = 0; j< parameters.length; ++j ) - { - Parameter param = parameters[j]; - parameterTypes[j] = new String(param.getTypeName()); - } - - FunctionDeclaration newElement = new FunctionDeclaration( parent, name ); - newElement.setParameterTypes(parameterTypes); - newElement.setReturnType( getTypeName() ); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - return newElement; - } - - /** - * Creates a Function and fills its info - * @param parent - * @param name - * @param parameters - * @return CElement - */ - private CElement createFunction(CElement parent, String name, Parameter[] parameters){ - String[] parameterTypes = new String[parameters.length]; - for( int j = 0; j< parameters.length; ++j ) - { - Parameter param = parameters[j]; - parameterTypes[j] = new String(param.getTypeName()); - } - - Function newElement = new Function( parent, name ); - newElement.setParameterTypes(parameterTypes); - newElement.setReturnType( getTypeName() ); - newElement.setVolatile(isVolatile()); - newElement.setStatic(isStatic()); - return newElement; - } - - /** - * @return Token - */ - public Token getClassKind() { - return classKind; - } - - /** - * Sets the classKind. - * @param classKind The classKind to set - */ - public void setClassKind(Token classKind) { - this.classKind = classKind; - } - - /** - * @return - */ - public Token getFirst() { - return first; - } - - /** - * @return - */ - public Token getLast() { - return last; - } - - /** - * @param token - */ - public void setFirst(Token token) { - first = token; - } - - /** - * @param token - */ - public void setLast(Token token) { - last = token; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/TranslationUnitWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/TranslationUnitWrapper.java deleted file mode 100644 index 38e85c1ec63..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/TranslationUnitWrapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.eclipse.cdt.internal.core.model; - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.IParent; - -/** - * @author jcamelon - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class TranslationUnitWrapper implements ICElementWrapper { - - TranslationUnit unit = null; - - /** - * @see org.eclipse.cdt.internal.core.model.IWrapper#getElement() - */ - public ICElement getElement() { - return unit; - } - /** - * @see org.eclipse.cdt.internal.core.model.IWrapper#setElement(java.lang.Object) - */ - public void setElement(ICElement item) { - unit = (TranslationUnit)item; - } - - public TranslationUnitWrapper( ) - { - } - - /** - * @see org.eclipse.cdt.internal.core.model.ICElementWrapper#getParent() - */ - public IParent getParent() { - return null; - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declaration.java index 6dff8df4b68..3233cd17f90 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declaration.java @@ -16,7 +16,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.Map; -import org.eclipse.cdt.internal.core.parser.util.TypeInfo; /** * @author aniefer diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index c97fb944e53..cd4c59b4d85 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -677,10 +677,10 @@ c, quick); case Token.t_friend: case Token.t_const: case Token.t_volatile: - case Token.t_signed: - case Token.t_unsigned: try{ decl = callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {} break; + case Token.t_signed: + case Token.t_unsigned: case Token.t_short: case Token.t_char: case Token.t_wchar_t: @@ -825,6 +825,7 @@ c, quick); Token first = LA(1); Token last = null; + Token mark = mark(); try{ callback.nameBegin(first); } catch( Exception e ) {} if (LT(1) == Token.tCOLONCOLON) @@ -858,6 +859,7 @@ c, quick); } break; default: + backup( mark ); throw backtrack; } @@ -868,6 +870,9 @@ c, quick); consume(); switch (LT(1)) { + case Token.t_operator: + backup( mark ); + throw backtrack; case Token.tIDENTIFIER: last = consume(); if( LT(1) == Token.tLT ) @@ -998,6 +1003,7 @@ c, quick); */ protected Object declarator( Object container ) throws Backtrack { + boolean anonymous = false; do { Object declarator = null; @@ -1037,7 +1043,7 @@ c, quick); { // operator () consume( Token.tLPAREN ); - toSend = toSend = consume( Token.tRPAREN ); + toSend = consume( Token.tRPAREN ); } else if ( LT(1) == Token.tLBRACKET && LT(2) == Token.tRBRACKET ) { @@ -1064,14 +1070,81 @@ c, quick); callback.nameEnd( toSend ); } catch( Exception e ) {} - + try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {} } else { - name(); + try + { + name(); + try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {} + } + catch( Backtrack bt ) + { + if( LT(1) == Token.tCOLONCOLON || LT(1) == Token.tIDENTIFIER ) + { + Token start = consume(); + Token end = null; + while( LT(1) == Token.tCOLONCOLON || LT(1) == Token.tIDENTIFIER ) + { + end = consume(); + } + + if( LT(1) == Token.t_operator ) + { + if( LA(1).isOperator() || LT(1) == Token.tLPAREN || LT(1) == Token.tLBRACKET ) + { + if( (LT(1) == Token.t_new || LT(1) == Token.t_delete ) && + LT(2) == Token.tLBRACKET && LT(3) == Token.tRBRACKET ) + { + consume(); + consume( Token.tLBRACKET ); + end = consume( Token.tRBRACKET ); + // vector new and delete operators + } + else if ( LT(1) == Token.tLPAREN && LT(2) == Token.tRPAREN ) + { + // operator () + consume( Token.tLPAREN ); + end = consume( Token.tRPAREN ); + } + else if ( LT(1) == Token.tLBRACKET && LT(2) == Token.tRBRACKET ) + { + consume( Token.tLBRACKET ); + end = consume( Token.tRBRACKET ); + } + else if( LA(1).isOperator() ) + end = consume(); + else + throw backtrack; + + } + else + { + // temporary + while( LT(1) != Token.tLPAREN ) + { + end = consume(); + } + } + + try{ + callback.nameBegin( start ); + callback.nameEnd( end ); + } catch( Exception e ) {} + + try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {} + } + } + else + { + // anonymous is good + anonymous = true; + } + } } - try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {} + for (;;) { switch (LT(1)) { case Token.tLPAREN: @@ -1176,8 +1249,10 @@ c, quick); try{ callback.arrayDeclaratorEnd( array );} catch( Exception e ) {} } continue; + default: + break; } - break; + break; } if( LA(1).getType() == Token.tIDENTIFIER ) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java index 4e83e33c6d5..730aaf26871 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Set; import java.util.Stack; -import org.eclipse.cdt.internal.core.parser.util.TypeInfo; /** * @author aniefer diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/TypeInfo.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeInfo.java similarity index 98% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/TypeInfo.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeInfo.java index 17e7d3147ec..63dca932e32 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/TypeInfo.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeInfo.java @@ -9,10 +9,8 @@ * Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.internal.core.parser.util; +package org.eclipse.cdt.internal.core.parser; -import org.eclipse.cdt.internal.core.parser.Declaration; -import org.eclipse.cdt.internal.core.parser.ParserSymbolTableException; /** * @author aniefer diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java deleted file mode 100644 index a5f72c7bca5..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java +++ /dev/null @@ -1,252 +0,0 @@ -package org.eclipse.cdt.internal.core.parser.util; - -import java.util.List; - -import org.eclipse.cdt.internal.core.parser.Token; - -/** - * @author jcamelon - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class DeclSpecifier { - - // DeclSpecifier layed out as bit array - // leftmost 5 bits are type - public static final int typeMask = 0x001f; - public static final int isAuto = 0x0020; - public static final int isRegister = 0x0040; - public static final int isStatic = 0x0080; - public static final int isExtern = 0x0100; - public static final int isMutable = 0x0200; - public static final int isInline = 0x0400; - public static final int isVirtual = 0x0800; - public static final int isExplicit = 0x1000; - public static final int isTypedef = 0x2000; - public static final int isFriend = 0x4000; - public static final int isConst = 0x8000; - public static final int isVolatile = 0x10000; - public static final int isUnsigned = 0x20000; - public static final int isShort = 0x40000; - public static final int isLong = 0x80000; - - private int declSpecifierSeq = 0; - public int getDeclSpecifierSeq() { return declSpecifierSeq; } - - // Convenience methods - private void setBit(boolean b, int mask) { - if (b) - declSpecifierSeq = declSpecifierSeq | mask; - else - declSpecifierSeq = declSpecifierSeq & ~mask; - } - - private boolean checkBit(int mask) { - int masked =(declSpecifierSeq & mask); - return (masked != 0); - } - - public void setAuto(boolean b) { setBit(b, isAuto); } - public boolean isAuto() { return checkBit(isAuto); } - - public void setRegister(boolean b) { setBit(b, isRegister); } - public boolean isRegister() { return checkBit(isRegister); } - - public void setStatic(boolean b) { setBit(b, isStatic); } - public boolean isStatic() { return checkBit(isStatic); } - - public void setExtern(boolean b) { setBit(b, isExtern); } - public boolean isExtern() { return checkBit(isExtern); } - - public void setMutable(boolean b) { setBit(b, isMutable); } - public boolean isMutable() { return checkBit(isMutable); } - - public void setInline(boolean b) { setBit(b, isInline); } - public boolean isInline() { return checkBit(isInline); } - - public void setVirtual(boolean b) { setBit(b, isVirtual); } - public boolean isVirtual() { return checkBit(isVirtual); } - - public void setExplicit(boolean b) { setBit(b, isExplicit); } - public boolean isExplicit() { return checkBit(isExplicit); } - - public void setTypedef(boolean b) { setBit(b, isTypedef); } - public boolean isTypedef() { return checkBit(isTypedef); } - - public void setFriend(boolean b) { setBit(b, isFriend); } - public boolean isFriend() { return checkBit(isFriend); } - - public void setConst(boolean b) { setBit(b, isConst); } - public boolean isConst() { return checkBit(isConst); } - - public void setVolatile(boolean b) { setBit(b, isVolatile); } - public boolean isVolatile() { return checkBit(isVolatile); } - - public void setUnsigned(boolean b) { setBit(b, isUnsigned); } - public boolean isUnsigned() { return checkBit(isUnsigned); } - - public void setShort(boolean b) { setBit(b, isShort); } - public boolean isShort() { return checkBit(isShort); } - - public void setLong(boolean b) { setBit(b, isLong); } - public boolean isLong() { return checkBit(isLong); } - - // Simple Types - public static final int t_type = 0; // Type Specifier - public static final int t_char = 1; - public static final int t_wchar_t = 2; - public static final int t_bool = 3; - public static final int t_int = 4; - public static final int t_float = 5; - public static final int t_double = 6; - public static final int t_void = 7; - - public void setType( Token token ) - { - switch (token.getType()) { - case Token.t_auto: - setAuto(true); - break; - case Token.t_register: - setRegister(true); - break; - case Token.t_static: - setStatic(true); - break; - case Token.t_extern: - setExtern(true); - break; - case Token.t_mutable: - setMutable(true); - break; - case Token.t_inline: - setInline(true); - break; - case Token.t_virtual: - setVirtual(true); - break; - case Token.t_explicit: - setExplicit(true); - break; - case Token.t_typedef: - setTypedef(true); - break; - case Token.t_friend: - setFriend(true); - break; - case Token.t_const: - setConst(true); - break; - case Token.t_volatile: - setVolatile(true); - break; - case Token.t_char: - setType(DeclSpecifier.t_char); - break; - case Token.t_wchar_t: - setType(DeclSpecifier.t_wchar_t); - break; - case Token.t_bool: - setType(DeclSpecifier.t_bool); - break; - case Token.t_short: - setShort(true); - break; - case Token.t_int: - setType(DeclSpecifier.t_int); - break; - case Token.t_long: - setLong(true); - break; - case Token.t_signed: - setUnsigned(false); - break; - case Token.t_unsigned: - setUnsigned(true); - break; - case Token.t_float: - setType(DeclSpecifier.t_float); - break; - case Token.t_double: - setType(DeclSpecifier.t_double); - break; - case Token.t_void: - setType(DeclSpecifier.t_void); - break; - case Token.tIDENTIFIER: - setType(DeclSpecifier.t_type); - break; - } - - } - - public void setType(int t) { - declSpecifierSeq = declSpecifierSeq & ~typeMask | t; - } - - public int getType() { - return declSpecifierSeq & typeMask; - } - - public interface Container { - - public DeclSpecifier getDeclSpecifier(); - - public void setDeclSpecifier( DeclSpecifier in ); - - public void addDeclarator(Object declarator); - public void removeDeclarator( Object declarator ); - public List getDeclarators(); - - }; - - Name name = null; - - /** - * Returns the name. - * @return Name - */ - public Name getName() { - return name; - } - - /** - * Sets the name. - * @param name The name to set - */ - public void setName(Name name) { - this.name = name; - } - - /** - * Returns the type as a String - * @return String - */ - public String getTypeName(){ - switch(getType()){ - case t_char: - return "char"; - case t_wchar_t: - return "wchar_t"; - case t_bool: - return "bool"; - case t_int: - return "int"; - case t_float: - return "float"; - case t_double: - return "double"; - case t_void: - return "void"; - case t_type: - if (getName() != null) - return getName().toString(); - default: - return ""; - } - } - -} diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index 56a4bcdb784..39b8d658164 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -1,3 +1,12 @@ +2003-04-09 John Camelon + Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). + Moved all the files in parser.util directory to the dom. + Organized imports. + Added DOMTests::testTemplateDeclarationOfMethod(). + Added DOMTests::testBug36250(). + Added DOMTests::testBug36240(). + Added DOMTests::testBug36254(). + 2003-04-09 John Camelon Updated ScannerTest::testBug36045(). Added ScannerTest::testBug36287(). diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java index 53520adb0ae..8338e65bdbf 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java @@ -11,11 +11,20 @@ import java.io.FileNotFoundException; import junit.framework.TestCase; import junit.framework.TestSuite; -import org.eclipse.cdt.testplugin.*; -import org.eclipse.cdt.testplugin.util.*; -import org.eclipse.cdt.core.model.*; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.*; + +import org.eclipse.cdt.core.model.IArchive; +import org.eclipse.cdt.core.model.IBinary; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.testplugin.CProjectHelper; +import org.eclipse.cdt.testplugin.util.ExpectedStrings; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/BinaryTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/BinaryTests.java index b5f9af70b83..ac6c775102b 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/BinaryTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/BinaryTests.java @@ -11,11 +11,19 @@ import java.io.FileNotFoundException; import junit.framework.TestCase; import junit.framework.TestSuite; -import org.eclipse.cdt.testplugin.*; -import org.eclipse.cdt.testplugin.util.*; -import org.eclipse.cdt.core.model.*; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.*; + +import org.eclipse.cdt.core.model.IBinary; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.testplugin.CProjectHelper; +import org.eclipse.cdt.testplugin.util.ExpectedStrings; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java index 62b9bdecfbf..262bd28e7cf 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java @@ -11,11 +11,20 @@ import java.io.FileNotFoundException; import junit.framework.TestCase; import junit.framework.TestSuite; -import org.eclipse.cdt.testplugin.*; + import org.eclipse.cdt.core.CCProjectNature; -import org.eclipse.cdt.core.model.*; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.*; +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.testplugin.CProjectHelper; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceDescription; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; /** diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitTests.java index 5cf0e56fd72..db8d6d889d5 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitTests.java @@ -12,11 +12,22 @@ import java.util.Stack; import junit.framework.TestCase; import junit.framework.TestSuite; -import org.eclipse.cdt.testplugin.*; -import org.eclipse.cdt.testplugin.util.*; -import org.eclipse.cdt.core.model.*; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.*; + +import org.eclipse.cdt.core.model.CModelException; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.core.model.IInclude; +import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.testplugin.CProjectHelper; +import org.eclipse.cdt.testplugin.util.ExpectedStrings; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceDescription; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; diff --git a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java index dfc12ecb182..62fe96a3dd4 100644 --- a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java +++ b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java @@ -8,13 +8,16 @@ import java.util.List; import junit.framework.TestCase; import org.eclipse.cdt.internal.core.dom.ASMDefinition; +import org.eclipse.cdt.internal.core.dom.AccessSpecifier; import org.eclipse.cdt.internal.core.dom.ArrayQualifier; import org.eclipse.cdt.internal.core.dom.BaseSpecifier; +import org.eclipse.cdt.internal.core.dom.ClassKey; import org.eclipse.cdt.internal.core.dom.ClassSpecifier; import org.eclipse.cdt.internal.core.dom.ConstructorChain; import org.eclipse.cdt.internal.core.dom.ConstructorChainElement; import org.eclipse.cdt.internal.core.dom.ConstructorChainElementExpression; import org.eclipse.cdt.internal.core.dom.DOMBuilder; +import org.eclipse.cdt.internal.core.dom.DeclSpecifier; import org.eclipse.cdt.internal.core.dom.Declarator; import org.eclipse.cdt.internal.core.dom.ElaboratedTypeSpecifier; import org.eclipse.cdt.internal.core.dom.EnumerationSpecifier; @@ -25,6 +28,7 @@ import org.eclipse.cdt.internal.core.dom.Expression; import org.eclipse.cdt.internal.core.dom.Inclusion; import org.eclipse.cdt.internal.core.dom.LinkageSpecification; import org.eclipse.cdt.internal.core.dom.Macro; +import org.eclipse.cdt.internal.core.dom.Name; import org.eclipse.cdt.internal.core.dom.NamespaceDefinition; import org.eclipse.cdt.internal.core.dom.ParameterDeclaration; import org.eclipse.cdt.internal.core.dom.ParameterDeclarationClause; @@ -38,14 +42,7 @@ import org.eclipse.cdt.internal.core.dom.UsingDirective; import org.eclipse.cdt.internal.core.parser.Parser; import org.eclipse.cdt.internal.core.parser.ParserException; import org.eclipse.cdt.internal.core.parser.Token; -import org.eclipse.cdt.internal.core.parser.util.AccessSpecifier; -import org.eclipse.cdt.internal.core.parser.util.ClassKey; -import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier; -import org.eclipse.cdt.internal.core.parser.util.Name; -/** - * Tests the construction of DOMs for snippets of code - */ public class DOMTests extends TestCase { public DOMTests( String arg ) @@ -986,7 +983,35 @@ public class DOMTests extends TestCase { } } - public void testTemplateDeclaration() throws Exception { + public void testTemplateDeclarationOfMethod() throws Exception + { + TranslationUnit tu = parse( "template A aTemplatedFunction( B bInstance );"); + assertEquals( tu.getDeclarations().size(), 1 ); + TemplateDeclaration templateDeclaration = (TemplateDeclaration)tu.getDeclarations().get(0); + assertEquals( templateDeclaration.getTemplateParms().getDeclarations().size(), 2 ); + TemplateParameter templateParameter = (TemplateParameter)templateDeclaration.getTemplateParms().getDeclarations().get(0); + assertEquals( templateParameter.getKind(), TemplateParameter.k_class ); + assertEquals( templateParameter.getName().toString(), "A"); + templateParameter = (TemplateParameter)templateDeclaration.getTemplateParms().getDeclarations().get(1); + assertEquals( templateParameter.getKind(), TemplateParameter.k_typename ); + assertEquals( templateParameter.getName().toString(), "B"); + assertEquals( templateParameter.getTypeId().toString(), "C"); + assertEquals( templateDeclaration.getDeclarations().size(), 1 ); + SimpleDeclaration methodDeclaration = (SimpleDeclaration) templateDeclaration.getDeclarations().get(0); + assertEquals( methodDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type ); + assertEquals( methodDeclaration.getDeclSpecifier().getTypeName(), "A"); + assertEquals( methodDeclaration.getDeclarators().size(), 1 ); + Declarator declarator = (Declarator)methodDeclaration.getDeclarators().get(0); + assertEquals( declarator.getName().toString(), "aTemplatedFunction" ); + assertEquals( declarator.getParms().getDeclarations().size(), 1 ); + ParameterDeclaration parameterDeclaration = (ParameterDeclaration)declarator.getParms().getDeclarations().get(0); + assertEquals( parameterDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type ); + assertEquals( parameterDeclaration.getDeclSpecifier().getTypeName(), "B" ); + assertEquals( parameterDeclaration.getDeclarators().size(), 1 ); + assertEquals( ((Declarator)parameterDeclaration.getDeclarators().get(0)).getName().toString(), "bInstance"); + } + + public void testTemplateDeclarationOfClass() throws Exception { TranslationUnit tu = parse( "template class, template class AClass> class myarray { /* ... */ };"); assertEquals( tu.getDeclarations().size(), 1 ); TemplateDeclaration declaration = (TemplateDeclaration)tu.getDeclarations().get(0); @@ -1137,6 +1162,68 @@ public class DOMTests extends TestCase { } } + public void testBug36250() throws Exception + { + TranslationUnit tu = parse( "int f( int = 0 );"); + assertEquals( tu.getDeclarations().size(), 1 ); + SimpleDeclaration functionDeclaration = (SimpleDeclaration)tu.getDeclarations().get(0); + assertEquals( functionDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_int ); + assertEquals( functionDeclaration.getDeclarators().size(), 1 ); + Declarator functionDeclarator = (Declarator)functionDeclaration.getDeclarators().get(0); + assertEquals( functionDeclarator.getName().toString(), "f" ); + assertEquals( functionDeclarator.getParms().getDeclarations().size(), 1 ); + ParameterDeclaration parameterDeclaration = (ParameterDeclaration)functionDeclarator.getParms().getDeclarations().get(0); + assertEquals( parameterDeclaration .getDeclSpecifier().getType(), DeclSpecifier.t_int ); + assertEquals( parameterDeclaration .getDeclarators().size(), 1 ); + Declarator parameterDeclarator = (Declarator)parameterDeclaration.getDeclarators().get(0); + assertNull( parameterDeclarator.getName() ); + assertNotNull( parameterDeclarator.getExpression()); + + } + public void testBug36240() throws Exception + { + TranslationUnit tu = parse( "A & A::operator=( A ){}"); + assertEquals( tu.getDeclarations().size(), 1 ); + SimpleDeclaration functionDeclaration = (SimpleDeclaration)tu.getDeclarations().get(0); + assertEquals( functionDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type ); + assertEquals( functionDeclaration.getDeclSpecifier().getTypeName(), "A" ); + assertEquals( functionDeclaration.getDeclarators().size(), 1 ); + Declarator functionDeclarator = (Declarator)functionDeclaration.getDeclarators().get(0); + assertEquals( functionDeclarator.getPointerOperators().size(), 1 ); + PointerOperator po = (PointerOperator)functionDeclarator.getPointerOperators().get(0); + assertEquals( po.getType(), PointerOperator.t_reference ); + assertFalse( po.isConst() || po.isVolatile() ); + assertEquals( functionDeclarator.getName().toString(), "A::operator="); + assertEquals( functionDeclarator.getParms().getDeclarations().size(), 1 ); + ParameterDeclaration parameterDeclaration = (ParameterDeclaration)functionDeclarator.getParms().getDeclarations().get(0); + assertEquals( parameterDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type ); + assertEquals( parameterDeclaration.getDeclSpecifier().getTypeName(), "A"); + assertEquals( parameterDeclaration .getDeclarators().size(), 1 ); + Declarator parameterDeclarator = (Declarator)parameterDeclaration.getDeclarators().get(0); + assertNull( parameterDeclarator.getName() ); + } + + public void testBug36254() throws Exception + { + TranslationUnit tu = parse( "unsigned i;\nvoid f( unsigned p1 = 0 );"); + assertEquals( tu.getDeclarations().size(), 2 ); + SimpleDeclaration declaration = (SimpleDeclaration)tu.getDeclarations().get(0); + assertTrue( declaration.getDeclSpecifier().isUnsigned()); + assertEquals( 1, declaration.getDeclarators().size() ); + assertEquals( "i", ((Declarator)declaration.getDeclarators().get(0)).getName().toString() ); + declaration = (SimpleDeclaration)tu.getDeclarations().get(1); + assertEquals( declaration.getDeclSpecifier().getType(), DeclSpecifier.t_void ); + assertEquals( 1, declaration.getDeclarators().size() ); + Declarator declarator = (Declarator)declaration.getDeclarators().get(0); + assertEquals( declarator.getName().toString(), "f" ); + assertEquals( declarator.getParms().getDeclarations().size(), 1 ); + ParameterDeclaration parmDecl = (ParameterDeclaration)declarator.getParms().getDeclarations().get(0); + assertTrue( parmDecl.getDeclSpecifier().isUnsigned()); + assertEquals( parmDecl.getDeclarators().size(), 1 ); + Declarator parmDeclarator = (Declarator) parmDecl.getDeclarators().get(0); + assertEquals( parmDeclarator.getName().toString(), "p1"); + assertNotNull( parmDeclarator.getExpression()); + } } diff --git a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java index 9acfacdae7e..4c49937d5c9 100644 --- a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java +++ b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java @@ -20,7 +20,7 @@ import junit.framework.TestCase; import org.eclipse.cdt.internal.core.parser.Declaration; import org.eclipse.cdt.internal.core.parser.ParserSymbolTable; import org.eclipse.cdt.internal.core.parser.ParserSymbolTableException; -import org.eclipse.cdt.internal.core.parser.util.TypeInfo; +import org.eclipse.cdt.internal.core.parser.TypeInfo; /** * @author aniefer