mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fix for bug 72818 - [Search] Selection Search for Union does not work
This commit is contained in:
parent
81400bdcc2
commit
173c4dc627
3 changed files with 39 additions and 3 deletions
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.core.parser.tests;
|
|||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
||||
|
@ -362,8 +363,22 @@ public class SelectionParseTest extends SelectionParseBaseTest {
|
|||
IASTNode node = parse( code, startIndex, startIndex+ 7 );
|
||||
|
||||
assertTrue( node instanceof IASTFunction );
|
||||
assertEquals( ((IASTFunction)node).getName(), "fprintf" ); //$NON-NLS-1$
|
||||
|
||||
|
||||
assertEquals( ((IASTFunction)node).getName(), "fprintf" ); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testBug72818() throws Exception
|
||||
{
|
||||
Writer writer = new StringWriter();
|
||||
writer.write( "union Squaw { int x; double u; };\n" ); //$NON-NLS-1$
|
||||
writer.write( "int main(int argc, char **argv) {\n" ); //$NON-NLS-1$
|
||||
writer.write( "return sizeof( Squaw );\n" ); //$NON-NLS-1$
|
||||
writer.write( "}\n" ); //$NON-NLS-1$
|
||||
String code = writer.toString();
|
||||
int startIndex = code.indexOf( "sizeof( ") + "sizeof( ".length(); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
IASTNode node = parse( code, startIndex, startIndex + 5 );
|
||||
assertTrue( node instanceof IASTClassSpecifier );
|
||||
IASTClassSpecifier classSpecifier = (IASTClassSpecifier) node;
|
||||
assertEquals( classSpecifier.getClassKind(), ASTClassKind.UNION );
|
||||
assertEquals( classSpecifier.getName(), "Squaw"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
|
|||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTUtil;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
|
||||
|
@ -55,4 +56,13 @@ public class ASTTypeIdExpression extends ASTExpression {
|
|||
public String toString(){
|
||||
return ASTUtil.getExpressionString( this );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#findOwnerExpressionForIDExpression(org.eclipse.cdt.core.parser.ITokenDuple)
|
||||
*/
|
||||
public ASTExpression findOwnerExpressionForIDExpression(ITokenDuple duple) {
|
||||
if( typeId instanceof ASTTypeId && ((ASTTypeId)typeId).getTokenDuple() == duple )
|
||||
return this;
|
||||
return super.findOwnerExpressionForIDExpression(duple);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
|
|||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTUtil;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
|
@ -60,4 +61,14 @@ public class ASTUnaryTypeIdExpression extends ASTUnaryExpression {
|
|||
public String toString(){
|
||||
return ASTUtil.getExpressionString( this );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTUnaryExpression#findOwnerExpressionForIDExpression(org.eclipse.cdt.core.parser.ITokenDuple)
|
||||
*/
|
||||
public ASTExpression findOwnerExpressionForIDExpression(ITokenDuple duple) {
|
||||
if( typeId instanceof ASTTypeId && ((ASTTypeId)typeId).getTokenDuple() == duple )
|
||||
return this;
|
||||
|
||||
return super.findOwnerExpressionForIDExpression(duple);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue