From 6f1acede845bf176465b71ae39e3203cd33589d0 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 17 Jun 2004 16:11:07 +0000 Subject: [PATCH] Patch for David Daoust - Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=67622.
Also added 2 JUnit tests to verify. --- .../cdt/core/parser/tests/CompleteParseASTTest.java | 5 +++++ .../eclipse/cdt/core/parser/tests/QuickParseASTTests.java | 8 ++++++-- .../eclipse/cdt/internal/core/parser/scanner/Scanner.java | 7 ++++++- .../core/parser/scanner/ScannerContextInclusion.java | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index eb1bca81bab..f232be1ff95 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -1942,4 +1942,9 @@ public class CompleteParseASTTest extends CompleteParseBaseTest writer.write("}\n"); //$NON-NLS-1$ parse( writer.toString() ); } + + public void testBug67622() throws Exception + { + parse( "const char * x = __FILE__;"); //$NON-NLS-1$ + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java index cd7359d30fd..55c9051e79a 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java @@ -2247,7 +2247,11 @@ public class QuickParseASTTests extends BaseASTTest public void testBadIdentifier() throws Exception { - parse( "class 0302 { private: int stinks; };", true, false ); //$NON-NLS-1$ - + parse( "class 0302 { private: int stinks; };", true, false ); //$NON-NLS-1$ + } + + public void testBug67622() throws Exception + { + parse( "const char * x = __FILE__;"); //$NON-NLS-1$ } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java index 1e64fdd1532..c83cf788945 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java @@ -276,7 +276,12 @@ public final class Scanner implements IScanner, IScannerData { addDefinition( __FILE__, new DynamicMacroDescriptor( __FILE__, new DynamicMacroEvaluator() { public String execute() { - return contextStack.getMostRelevantFileContext().getContextName(); + String fName = contextStack.getMostRelevantFileContext().getContextName(); + StringBuffer buff = new StringBuffer(fName.length() + 2); + buff.append('"'); + buff.append(fName); + buff.append('"'); + return buff.toString(); } } ) ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContextInclusion.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContextInclusion.java index 258be57ae8f..d27fb08ce8c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContextInclusion.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContextInclusion.java @@ -63,6 +63,7 @@ public class ScannerContextInclusion implements IScannerContext */ public void ungetChar(int undo) { --offset; + if (undo == '\n') line--; } /**