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: