Skip to content

Commit f69d30e

Browse files
Merge pull request #30 from apex-dev-tools/29-handle-+-on-switch-when-expressions-using-integer-or-long-literals
Support +/- on switch when numeric literals
2 parents 8612cf5 + 74e234c commit f69d30e

File tree

9 files changed

+41
-8
lines changed

9 files changed

+41
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.metals/
2+
.vscode/

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# apex-parser - Changelog
22

3+
## 3.4.0 - 2023-08-22
4+
5+
- Support +/- sequences on numeric literals in switch 'when' expressions
6+
37
## 3.3.0 - 2023-04-30
48

59
- Update to ANTLR 4.9.1

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ Maven
4848
<dependency>
4949
<groupId>io.github.apex-dev-tools</groupId>
5050
<artifactId>apex-parser</artifactId>
51-
<version>3.3.0</version>
51+
<version>3.4.0</version>
5252
</dependency>
5353

5454
NPM
5555

56-
"@apexdevtools/apex-parser": "^3.3.0"
56+
"@apexdevtools/apex-parser": "^3.4.0"
5757

5858
## Building
5959

antlr/ApexParser.g4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,8 @@ whenValue
300300
;
301301

302302
whenLiteral
303-
: (SUB)? IntegerLiteral
304-
| LongLiteral
303+
: (SUB|ADD)* IntegerLiteral
304+
| (SUB|ADD)* LongLiteral
305305
| StringLiteral
306306
| NULL
307307
| id

jvm/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>io.github.apex-dev-tools</groupId>
66
<artifactId>apex-parser</artifactId>
7-
<version>3.3.0</version>
7+
<version>3.4.0</version>
88
<packaging>jar</packaging>
99

1010
<name>apex-parser</name>

jvm/src/test/java/com/nawforce/apexparser/ApexParserTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,19 @@ void testWhenLiteralParens() {
125125
assertEquals(0, parserAndCounter.getValue().getNumErrors());
126126
}
127127

128+
@Test
129+
void testWhenLiteralSigns() {
130+
Map.Entry<ApexParser, SyntaxErrorCounter> parserAndCounter = createParser(
131+
"switch on (x) { \n" +
132+
" when -1 { return 1; } \n" +
133+
" when (+2l) { return 1; } \n" +
134+
" when -+-3 { return 3; } \n" +
135+
"}");
136+
ApexParser.StatementContext context = parserAndCounter.getKey().statement();
137+
assertNotNull(context);
138+
assertEquals(0, parserAndCounter.getValue().getNumErrors());
139+
}
140+
128141
@Test
129142
void testSoqlModeKeywords() {
130143
String [] MODES = new String[] { "USER_MODE", "SYSTEM_MODE" };

npm/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

npm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@apexdevtools/apex-parser",
3-
"version": "3.3.0",
3+
"version": "3.4.0",
44
"author": "Apex Dev Tools Team <[email protected]> (https://github.com/apex-dev-tools)",
55
"bugs": "https://github.com/apex-dev-tools/apex-parser/issues",
66
"description": "Javascript parser for Salesforce Apex Language",

npm/src/__tests__/ApexParserTest.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,20 @@ test('testWhenLiteralParens', () => {
145145
expect(errorCounter.getNumErrors()).toEqual(0)
146146
})
147147

148+
test("testWhenLiteralParens", () => {
149+
const [parser, errorCounter] = createParser(`
150+
switch on (x) {
151+
when 1 { return 1; }
152+
when ((2)) { return 2; }
153+
when (3), (4) { return 3; }
154+
}`);
155+
156+
const context = parser.statement();
157+
158+
expect(context).toBeInstanceOf(StatementContext);
159+
expect(errorCounter.getNumErrors()).toEqual(0);
160+
});
161+
148162
test('testSoqlModeKeywords', () => {
149163
const MODES = ["USER_MODE", "SYSTEM_MODE"];
150164
for (const mode of MODES) {

0 commit comments

Comments
 (0)