Skip to content

Commit a8b3401

Browse files
i-garrisonjonahgraham
authored andcommitted
Add rewriter test for c++20 three-way comparison expression
1 parent 5eb8963 commit a8b3401

File tree

4 files changed

+32
-20
lines changed

4 files changed

+32
-20
lines changed

core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
1616

1717
import org.eclipse.cdt.core.parser.ParserLanguage;
18+
import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind;
1819
import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
1920

2021
/**
2122
* @author Guido Zgraggen IFS
2223
*/
2324
public class ASTWriterTestSourceFile extends TestSourceFile {
2425
private ParserLanguage parserLanguage = ParserLanguage.CPP;
25-
private boolean useGNUExtensions = false;
26+
private ScannerKind scannerKind = ScannerKind.STD;
2627

2728
public ASTWriterTestSourceFile(String name) {
2829
super(name);
@@ -36,11 +37,11 @@ public ParserLanguage getParserLanguage() {
3637
return parserLanguage;
3738
}
3839

39-
public boolean isUseGNUExtensions() {
40-
return useGNUExtensions;
40+
public ScannerKind getScannerKind() {
41+
return scannerKind;
4142
}
4243

43-
public void setUseGNUExtensions(boolean useGNUExtensions) {
44-
this.useGNUExtensions = useGNUExtensions;
44+
public void setScannerKind(ScannerKind scannerKind) {
45+
this.scannerKind = scannerKind;
4546
}
4647
}

core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.eclipse.cdt.core.parser.ParserMode;
3333
import org.eclipse.cdt.core.parser.ScannerInfo;
3434
import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase;
35+
import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind;
3536
import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
3637
import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper;
3738
import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
@@ -94,16 +95,16 @@ public String generateSource(TestSourceFile testFile) throws Exception {
9495
protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception {
9596
FileContent codeReader = FileContent.create(file);
9697

97-
ScannerInfo scannerInfo = new ScannerInfo();
9898
ParserLanguage language = getLanguage(testFile);
99-
boolean useGNUExtensions = getGNUExtension(testFile);
99+
ScannerKind scannerKind = getScannerKind(testFile);
100+
ScannerInfo scannerInfo = AST2TestBase.createScannerInfo(scannerKind);
100101

101102
IScanner scanner = AST2TestBase.createScanner(codeReader, language, ParserMode.COMPLETE_PARSE, scannerInfo);
102103

103104
ISourceCodeParser parser = null;
104105
if (language == ParserLanguage.CPP) {
105106
ICPPParserExtensionConfiguration config = null;
106-
if (useGNUExtensions) {
107+
if (scannerKind.isUseGNUExtensions()) {
107108
config = new GPPParserExtensionConfiguration();
108109
} else {
109110
config = new ANSICPPParserExtensionConfiguration();
@@ -112,7 +113,7 @@ protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception
112113
} else {
113114
ICParserExtensionConfiguration config = null;
114115

115-
if (useGNUExtensions) {
116+
if (scannerKind.isUseGNUExtensions()) {
116117
config = new GCCParserExtensionConfiguration();
117118
} else {
118119
config = new ANSICParserExtensionConfiguration();
@@ -123,10 +124,10 @@ protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception
123124
return parser;
124125
}
125126

126-
private boolean getGNUExtension(TestSourceFile file) {
127+
private ScannerKind getScannerKind(TestSourceFile file) {
127128
if (file instanceof ASTWriterTestSourceFile)
128-
return ((ASTWriterTestSourceFile) file).isUseGNUExtensions();
129-
return false;
129+
return ((ASTWriterTestSourceFile) file).getScannerKind();
130+
return ScannerKind.STD;
130131
}
131132

132133
private ParserLanguage getLanguage(TestSourceFile file) {

core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.regex.Pattern;
2323

2424
import org.eclipse.cdt.core.parser.ParserLanguage;
25+
import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase.ScannerKind;
2526
import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
2627
import org.eclipse.cdt.core.testplugin.CTestPlugin;
2728
import org.eclipse.core.runtime.FileLocator;
@@ -34,7 +35,7 @@
3435

3536
public class SourceRewriteTest extends TestSuite {
3637
private static final String testRegexp = "//!(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
37-
private static final String codeTypeRegexp = "//%(C|CPP)( GNU)?$"; //$NON-NLS-1$
38+
private static final String codeTypeRegexp = "//%(C|CPP|CPP20)( GNU)?$"; //$NON-NLS-1$
3839
private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$
3940

4041
enum MatcherState {
@@ -149,7 +150,7 @@ private static ArrayList<RewriteBaseTest> createTests(BufferedReader inputReader
149150
matcherState = MatcherState.inSource;
150151
if (file != null) {
151152
file.setParserLanguage(getParserLanguage(line));
152-
file.setUseGNUExtensions(useGNUExtensions(line));
153+
file.setScannerKind(getScannerKind(line));
153154
}
154155
continue;
155156
}
@@ -172,17 +173,20 @@ private static ArrayList<RewriteBaseTest> createTests(BufferedReader inputReader
172173
return testCases;
173174
}
174175

175-
protected static boolean useGNUExtensions(String line) {
176+
protected static ScannerKind getScannerKind(String line) {
176177
Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
177178
if (matcherBeginOfTest.find()) {
178-
String codeType = matcherBeginOfTest.group(2);
179-
if (codeType == null) {
180-
return false;
179+
String codeType = matcherBeginOfTest.group(1);
180+
String gnuExtensionsType = matcherBeginOfTest.group(2);
181+
if (gnuExtensionsType == null) {
182+
if (codeType.equalsIgnoreCase("CPP20")) { //$NON-NLS-1$
183+
return ScannerKind.STDCPP20;
184+
}
181185
} else {
182-
return true;
186+
return ScannerKind.GNU;
183187
}
184188
}
185-
return false;
189+
return ScannerKind.STD;
186190
}
187191

188192
protected static ParserLanguage getParserLanguage(String line) {
@@ -191,6 +195,8 @@ protected static ParserLanguage getParserLanguage(String line) {
191195
String codeType = matcherBeginOfTest.group(1);
192196
if (codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$
193197
return ParserLanguage.CPP;
198+
} else if (codeType.equalsIgnoreCase("CPP20")) { //$NON-NLS-1$
199+
return ParserLanguage.CPP;
194200
} else {
195201
return ParserLanguage.C;
196202
}

core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ bool b = 1 != x;
8484
int i = a.x;
8585
int i = a->x;
8686

87+
//!CPP20BinaryExpression
88+
//%CPP20
89+
auto r = x <=> y;
90+
8791
//!BinaryExpression with MacroExpansions
8892
//%CPP
8993
#define ZWO 2

0 commit comments

Comments
 (0)