diff options
author | Mike Kucera | 2009-06-04 15:23:16 +0000 |
---|---|---|
committer | Mike Kucera | 2009-06-04 15:23:16 +0000 |
commit | 06841d979370b2c2937c1fd5596ea6bd18938b2d (patch) | |
tree | b52b73a0bdc006b1ec7d3dca10ca1d99da5fa331 /core | |
parent | e9154e34f0248d765286a1ed1037a781fca3dea9 (diff) | |
download | org.eclipse.cdt-06841d979370b2c2937c1fd5596ea6bd18938b2d.tar.gz org.eclipse.cdt-06841d979370b2c2937c1fd5596ea6bd18938b2d.tar.xz org.eclipse.cdt-06841d979370b2c2937c1fd5596ea6bd18938b2d.zip |
[278797] CASTIdExpression getExpressionType() doesn't support enumerations
Diffstat (limited to 'core')
2 files changed, 22 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index a283325e29f..07d29079057 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -6300,4 +6300,18 @@ public class AST2Tests extends AST2BaseTest { assertTrue(e instanceof IASTLiteralExpression); } + // enum myenum { value1, value2, value3 }; + // + // void test() { + // (int) value1; + // } + public void testBug278797() throws Exception { + IASTTranslationUnit tu = parseAndCheckBindings(getAboveComment(), ParserLanguage.C); + IASTFunctionDefinition func = (IASTFunctionDefinition)tu.getDeclarations()[1]; + IASTExpressionStatement stmt = ((IASTExpressionStatement)((IASTCompoundStatement)func.getBody()).getStatements()[0]); + IType t = ((IASTCastExpression)stmt.getExpression()).getOperand().getExpressionType(); + assertNotNull(t); + assertTrue(t instanceof IEnumeration); + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java index fa9054a7b59..35de0e98c54 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java @@ -21,7 +21,9 @@ import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IEnumeration; +import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.dom.ast.IFunction; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.parser.util.ArrayUtil; @@ -97,6 +99,12 @@ public class CASTIdExpression extends ASTNode implements IASTIdExpression, IASTC if (binding instanceof IFunction) { return ((IFunction)binding).getType(); } + if (binding instanceof IEnumerator) { + return ((IEnumerator)binding).getType(); + } + if (binding instanceof IProblemBinding) { + return (IProblemBinding)binding; + } } catch (DOMException e) { return e.getProblem(); } |