private void assertExpressionLocation(IASTDeclaration decl, int index, int length) { IASTSimpleDeclaration var = (IASTSimpleDeclaration) decl; IASTEqualsInitializer initializer = (IASTEqualsInitializer) var.getDeclarators()[0].getInitializer(); IASTInitializerClause expr = initializer.getInitializerClause(); IASTFileLocation fileLocation = expr.getFileLocation(); assertNotNull(fileLocation); assertEquals(index, fileLocation.getNodeOffset()); assertEquals(length, fileLocation.getNodeLength()); }
private void assertMacroLocation(IASTDeclaration decl, int index, int length) { IASTSimpleDeclaration var = (IASTSimpleDeclaration) decl; IASTEqualsInitializer initializer = (IASTEqualsInitializer) var.getDeclarators()[0].getInitializer(); IASTInitializerClause expr = initializer.getInitializerClause(); assertNotNull(expr.getFileLocation()); IASTNodeLocation[] locations = expr.getNodeLocations(); assertEquals(1, locations.length); IASTMacroExpansionLocation macroExpansion = (IASTMacroExpansionLocation) locations[0]; IASTNodeLocation[] expLocations = macroExpansion.getExpansion().getNodeLocations(); assertEquals(1, expLocations.length); IASTFileLocation fileLocation = expLocations[0].asFileLocation(); assertEquals(index, fileLocation.getNodeOffset()); assertEquals(length, fileLocation.getNodeLength()); }
public void testFunctionMacroExpansionWithNameSubstitution_Bug173637() throws Exception { StringBuffer buffer = new StringBuffer("#define PLUS5(x) (x+5)\n"); // $NON-NLS-1$ buffer.append("#define FUNCTION PLUS5 \n"); // $NON-NLS-1$ buffer.append("int var= FUNCTION(1);"); // $NON-NLS-1$ String code = buffer.toString(); for (ParserLanguage language : languages) { IASTTranslationUnit tu = parse(code, language); IASTSimpleDeclaration var = (IASTSimpleDeclaration) tu.getDeclarations()[0]; IASTEqualsInitializer initializer = (IASTEqualsInitializer) var.getDeclarators()[0].getInitializer(); IASTInitializerClause expr = initializer.getInitializerClause(); assertNotNull(expr.getFileLocation()); IASTNodeLocation[] locations = expr.getNodeLocations(); assertEquals(1, locations.length); IASTMacroExpansionLocation macroExpansion = (IASTMacroExpansionLocation) locations[0]; IASTNodeLocation[] expLocations = macroExpansion.getExpansion().getNodeLocations(); assertEquals(1, expLocations.length); assertEquals(code.indexOf("FUNCTION(1)"), expLocations[0].getNodeOffset()); assertEquals("FUNCTION(1)".length(), expLocations[0].getNodeLength()); } }