diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java index 6de1935ec1e..3752ede10ae 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.core.parser.tests.rewrite.astwriter; import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind; import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile; /** @@ -22,7 +23,7 @@ import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile; */ public class ASTWriterTestSourceFile extends TestSourceFile { private ParserLanguage parserLanguage = ParserLanguage.CPP; - private boolean useGNUExtensions = false; + private ScannerKind scannerKind = ScannerKind.STD; public ASTWriterTestSourceFile(String name) { super(name); @@ -36,11 +37,11 @@ public class ASTWriterTestSourceFile extends TestSourceFile { return parserLanguage; } - public boolean isUseGNUExtensions() { - return useGNUExtensions; + public ScannerKind getScannerKind() { + return scannerKind; } - public void setUseGNUExtensions(boolean useGNUExtensions) { - this.useGNUExtensions = useGNUExtensions; + public void setScannerKind(ScannerKind scannerKind) { + this.scannerKind = scannerKind; } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java index 17b7480144e..c7cd80c8c4b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java @@ -32,6 +32,7 @@ import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase; +import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind; import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest; import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper; import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile; @@ -94,16 +95,16 @@ public abstract class ASTWriterTester extends RewriteBaseTest { protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception { FileContent codeReader = FileContent.create(file); - ScannerInfo scannerInfo = new ScannerInfo(); ParserLanguage language = getLanguage(testFile); - boolean useGNUExtensions = getGNUExtension(testFile); + ScannerKind scannerKind = getScannerKind(testFile); + ScannerInfo scannerInfo = AST2TestBase.createScannerInfo(scannerKind); IScanner scanner = AST2TestBase.createScanner(codeReader, language, ParserMode.COMPLETE_PARSE, scannerInfo); ISourceCodeParser parser = null; if (language == ParserLanguage.CPP) { ICPPParserExtensionConfiguration config = null; - if (useGNUExtensions) { + if (scannerKind.isUseGNUExtensions()) { config = new GPPParserExtensionConfiguration(); } else { config = new ANSICPPParserExtensionConfiguration(); @@ -112,7 +113,7 @@ public abstract class ASTWriterTester extends RewriteBaseTest { } else { ICParserExtensionConfiguration config = null; - if (useGNUExtensions) { + if (scannerKind.isUseGNUExtensions()) { config = new GCCParserExtensionConfiguration(); } else { config = new ANSICParserExtensionConfiguration(); @@ -123,10 +124,10 @@ public abstract class ASTWriterTester extends RewriteBaseTest { return parser; } - private boolean getGNUExtension(TestSourceFile file) { + private ScannerKind getScannerKind(TestSourceFile file) { if (file instanceof ASTWriterTestSourceFile) - return ((ASTWriterTestSourceFile) file).isUseGNUExtensions(); - return false; + return ((ASTWriterTestSourceFile) file).getScannerKind(); + return ScannerKind.STD; } private ParserLanguage getLanguage(TestSourceFile file) { diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java index 8e1333480f2..4709a38eea3 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java @@ -22,6 +22,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind; import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest; import org.eclipse.cdt.core.testplugin.CTestPlugin; import org.eclipse.core.runtime.FileLocator; @@ -34,7 +35,7 @@ import junit.framework.TestSuite; public class SourceRewriteTest extends TestSuite { private static final String testRegexp = "//!(.*)\\s*(\\w*)*$"; //$NON-NLS-1$ - private static final String codeTypeRegexp = "//%(C|CPP)( GNU)?$"; //$NON-NLS-1$ + private static final String codeTypeRegexp = "//%(C|CPP|CPP20)( GNU)?$"; //$NON-NLS-1$ private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$ enum MatcherState { @@ -149,7 +150,7 @@ public class SourceRewriteTest extends TestSuite { matcherState = MatcherState.inSource; if (file != null) { file.setParserLanguage(getParserLanguage(line)); - file.setUseGNUExtensions(useGNUExtensions(line)); + file.setScannerKind(getScannerKind(line)); } continue; } @@ -172,17 +173,20 @@ public class SourceRewriteTest extends TestSuite { return testCases; } - protected static boolean useGNUExtensions(String line) { + protected static ScannerKind getScannerKind(String line) { Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line); if (matcherBeginOfTest.find()) { - String codeType = matcherBeginOfTest.group(2); - if (codeType == null) { - return false; + String codeType = matcherBeginOfTest.group(1); + String gnuExtensionsType = matcherBeginOfTest.group(2); + if (gnuExtensionsType == null) { + if (codeType.equalsIgnoreCase("CPP20")) { //$NON-NLS-1$ + return ScannerKind.STDCPP20; + } } else { - return true; + return ScannerKind.GNU; } } - return false; + return ScannerKind.STD; } protected static ParserLanguage getParserLanguage(String line) { @@ -191,6 +195,8 @@ public class SourceRewriteTest extends TestSuite { String codeType = matcherBeginOfTest.group(1); if (codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$ return ParserLanguage.CPP; + } else if (codeType.equalsIgnoreCase("CPP20")) { //$NON-NLS-1$ + return ParserLanguage.CPP; } else { return ParserLanguage.C; } 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 03e210bec9e..13f7a50fc11 100644 --- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts +++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts @@ -84,6 +84,10 @@ bool b = 1 != x; int i = a.x; int i = a->x; +//!CPP20BinaryExpression +//%CPP20 +auto r = x <=> y; + //!BinaryExpression with MacroExpansions //%CPP #define ZWO 2