[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] insert pragma into AST?
|
Please open a bug report for this.
On Tuesday 29 July 2008, Jimmie Eriksson wrote:
> Did I find the error... in ASTModificationHelper.java?
> ...
> ...
> public <T extends IASTNode> T[] createModifiedChildArray(IASTNode parent,
> T[] unmodifiedChildren, Class<T> clazz){ ...
> ...
> case INSERT_BEFORE:
> T insertedTNode = cast(parentModification.getNewNode(),
> clazz); // this line returns null.... ... .. even though the getNewNode()
> is the new literalnode I created... thats why I get a nullpointerexception
> ...
> ...
> @SuppressWarnings("unchecked")
> private <T> T cast(IASTNode node, Class<T> clazz) {
> if (clazz.isInstance(node)){ // clazz(=IASTStatement) isNOTInstance
> (node(=IASTLiteralNode)) return (T) node;
> }
> return null; // this always return null on the IASTLiteralNode
> }
>
> This code should be equal to what I use... the important part here is that
> the insertionPoint is of type CASTForStatement and the parent is of type
> CASTCompoundStatement try {
> IASTTranslationUnit tu = insertionPoint.getTranslationUnit();
> ASTRewrite aSTRewrite = ASTRewrite.create(tu);
> IASTNode lit = aSTRewrite.createLiteralNode("Any text that I
> want... I will use it for a #pragma");
> aSTRewrite.insertBefore(insertionPoint.getParent(), insertionPoint, lit,
> null); Change change = aSTRewrite.rewriteAST();
> change.perform(new NullProgressMonitor());
> } catch (Exception e) {
> e.printStackTrace();
> }
>
> // the c program...
>
> int main() { // CASTCompoundStatement
> int i;
> for(i = 0; i < 4; i ++) { // CASTForStatement
> printf("hej");
> }
> return 0;
> }
--
Emanuel Graf Dipl. Ing FH
Institut für Software - http://ifs.hsr.ch - +41 55 222 4622
HSR Hochschule für Technik Rapperswil
Oberseestr 10, Postfach 1475, CH-8640 Rapperswil