From 8d99a621b357c4e6e5ca82d92d961813bdff5313 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 8 Sep 2008 08:06:20 +0000 Subject: [PATCH] Handles 'true' and 'false' in expression evaluator, bug 246369. --- .../tests/scanner/PreprocessorBugsTests.java | 18 ++++++++++++++++++ .../parser/scanner/ExpressionEvaluator.java | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java index 86a776868d4..e6ed8b24c7d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java @@ -131,4 +131,22 @@ public class PreprocessorBugsTests extends PreprocessorTestsBase { validateEOF(); validateProblemCount(2); } + + // #if true + // yes + // #else + // no + // #endif + // #if false + // no + // #else + // yes + // #endif + public void testTrueInConditionalExpression_Bug246369() throws Exception { + initializeScanner(); + validateIdentifier("yes"); + validateIdentifier("yes"); + validateEOF(); + validateProblemCount(0); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java index 2bd913ee43b..3cf380f0458 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java @@ -238,6 +238,12 @@ class ExpressionEvaluator { long val= getValue(fTokens); consume(); return val; + case IToken.t_true: + consume(); + return 1; + case IToken.t_false: + consume(); + return 0; case CPreprocessor.tDEFINED: return handleDefined(); case IToken.tLPAREN: