From 368736adaf1b374ce69d204b2e25e279cf038eb3 Mon Sep 17 00:00:00 2001 From: Emanuel Graf Date: Thu, 1 Jul 2010 08:12:10 +0000 Subject: [PATCH] Bug 318552: NPE in ExpressionWriter for unary expression without an operand https://bugs.eclipse.org/bugs/show_bug.cgi?id=318552 --- .../rewrite/ASTWriterExpressionTestSource.awts | 14 ++++++++++++++ .../dom/rewrite/astwriter/ExpressionWriter.java | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts index 594bebbea6c..345c4453981 100644 --- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts +++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts @@ -159,6 +159,20 @@ void f() type_info c = typeid (a); +//!CPPUnaryExpression without operand Bug 318552 +//%CPP +void rethrow() +{ + try { + int i = 1; + throw i; + } + catch(int j){ + throw ; + } +} + + //!TypeIdExpression //%CPP int d = sizeof (int); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java index 3c9cce0eb1f..8dbf6b354d0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java @@ -383,7 +383,7 @@ public class ExpressionWriter extends NodeWriter{ if(isPrefixExpression(unExp )) { scribe.print(getPrefixOperator(unExp)); } - unExp.getOperand().accept(visitor); + visitNodeIfNotNull(unExp.getOperand()); if(isPostfixExpression(unExp)) { scribe.print(getPostfixOperator(unExp)); }