Skip to content

Commit f2c55bd

Browse files
committed
refactor version statement handling and names
1 parent 1b3fc71 commit f2c55bd

File tree

6 files changed

+105
-40
lines changed

6 files changed

+105
-40
lines changed

glsl-transformer/src/main/antlr/GLSLLexer.g4

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -376,23 +376,23 @@ NR_STDGL: 'STDGL';
376376
NR_CORE: 'core';
377377
NR_COMPATIBILITY: 'compatibility';
378378
NR_ES: 'es';
379-
NR_GL_110: '110';
380-
NR_GL_120: '120';
381-
NR_GLES_100: '100';
382-
NR_GL_130: '130';
383-
NR_GL_140: '140';
384-
NR_GL_150: '150';
385-
NR_GL_330: '330';
386-
NR_GLES_300: '300';
387-
NR_GLES_310: '310';
388-
NR_GLES_320: '320';
389-
NR_GL_400: '400';
390-
NR_GL_410: '410';
391-
NR_GL_420: '420';
392-
NR_GL_430: '430';
393-
NR_GL_440: '440';
394-
NR_GL_450: '450';
395-
NR_GL_460: '460';
379+
NR_GLSL_110: '110';
380+
NR_GLSL_120: '120';
381+
NR_GLSLES_100: '100';
382+
NR_GLSL_130: '130';
383+
NR_GLSL_140: '140';
384+
NR_GLSL_150: '150';
385+
NR_GLSL_330: '330';
386+
NR_GLSLES_300: '300';
387+
NR_GLSLES_310: '310';
388+
NR_GLSLES_320: '320';
389+
NR_GLSL_400: '400';
390+
NR_GLSL_410: '410';
391+
NR_GLSL_420: '420';
392+
NR_GLSL_430: '430';
393+
NR_GLSL_440: '440';
394+
NR_GLSL_450: '450';
395+
NR_GLSL_460: '460';
396396

397397
NR_INTCONSTANT: INTCONSTANT_frag;
398398
NR_IDENTIFIER: IDENTIFIER_frag;

glsl-transformer/src/main/java/io/github/douira/glsl_transformer/ast/node/TranslationUnit.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ public void appendMain(ASTParser t, String statement) {
133133
appendMain(t.parseStatement(this, statement));
134134
}
135135

136+
public void ensureVersionStatement() {
137+
if (versionStatement == null) {
138+
setVersionStatement(VersionStatement.getDefault());
139+
}
140+
}
141+
136142
@Override
137143
public <R> R accept(ASTVisitor<R> visitor) {
138144
return visitor.visitTranslationUnit(this);

glsl-transformer/src/main/java/io/github/douira/glsl_transformer/ast/node/Version.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,25 @@
66
import io.github.douira.glsl_transformer.ast.data.*;
77

88
public enum Version implements TokenTyped {
9-
GL20(GLSLLexer.NR_GL_110, 110),
10-
GL21(GLSLLexer.NR_GL_120, 120),
11-
GLES20(GLSLLexer.NR_GLES_100, 100, true),
12-
GL30(GLSLLexer.NR_GL_130, 130),
13-
GL31(GLSLLexer.NR_GL_140, 140),
14-
GL32(GLSLLexer.NR_GL_150, 150),
15-
GL33(GLSLLexer.NR_GL_330, 330),
16-
GLES30(GLSLLexer.NR_GLES_300, 300, true),
17-
GLES31(GLSLLexer.NR_GLES_310, 310, true),
18-
GLES32(GLSLLexer.NR_GLES_320, 320, true),
19-
GL40(GLSLLexer.NR_GL_400, 400),
20-
GL41(GLSLLexer.NR_GL_410, 410),
21-
GL42(GLSLLexer.NR_GL_420, 420),
22-
GL43(GLSLLexer.NR_GL_430, 430),
23-
GL44(GLSLLexer.NR_GL_440, 440),
24-
GL45(GLSLLexer.NR_GL_450, 450),
25-
GL46(GLSLLexer.NR_GL_460, 460);
26-
27-
public static Version latest = GL46;
9+
GLSLES10(GLSLLexer.NR_GLSLES_100, 100, true),
10+
GLSLES30(GLSLLexer.NR_GLSLES_300, 300, true),
11+
GLSLES31(GLSLLexer.NR_GLSLES_310, 310, true),
12+
GLSLES32(GLSLLexer.NR_GLSLES_320, 320, true),
13+
GLSL11(GLSLLexer.NR_GLSL_110, 110),
14+
GLSL12(GLSLLexer.NR_GLSL_120, 120),
15+
GLSL13(GLSLLexer.NR_GLSL_130, 130),
16+
GLSL14(GLSLLexer.NR_GLSL_140, 140),
17+
GLSL15(GLSLLexer.NR_GLSL_150, 150),
18+
GLSL33(GLSLLexer.NR_GLSL_330, 330),
19+
GLSL40(GLSLLexer.NR_GLSL_400, 400),
20+
GLSL41(GLSLLexer.NR_GLSL_410, 410),
21+
GLSL42(GLSLLexer.NR_GLSL_420, 420),
22+
GLSL43(GLSLLexer.NR_GLSL_430, 430),
23+
GLSL44(GLSLLexer.NR_GLSL_440, 440),
24+
GLSL45(GLSLLexer.NR_GLSL_450, 450),
25+
GLSL46(GLSLLexer.NR_GLSL_460, 460);
26+
27+
public static Version latest = Version.GLSL46;
2828

2929
public final int tokenType;
3030
public final int number;

glsl-transformer/src/main/java/io/github/douira/glsl_transformer/ast/node/VersionStatement.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public VersionStatement(Version version, Profile profile) {
1818
this.profile = profile;
1919
}
2020

21-
public VersionStatement(Version version) {
22-
this(version, Profile.CORE);
21+
public static VersionStatement getDefault() {
22+
return new VersionStatement(Version.GLSL11, null);
2323
}
2424

2525
@Override
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package io.github.douira.glsl_transformer.ast.node;
2+
3+
import static org.junit.jupiter.api.Assertions.*;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
import io.github.douira.glsl_transformer.ast.query.Root;
8+
import io.github.douira.glsl_transformer.test_util.TestWithSingleASTTransformer;
9+
10+
public class VersionStatementTest extends TestWithSingleASTTransformer {
11+
@Test
12+
void testMissingWithEnsure() {
13+
Root.indexBuildSession(() -> {
14+
var tu = p.parseTranslationUnit(";");
15+
tu.ensureVersionStatement();
16+
assertNotNull(tu.versionStatement);
17+
assertNull(tu.versionStatement.profile);
18+
assertEquals(Version.GLSL11, tu.versionStatement.version);
19+
});
20+
}
21+
22+
@Test
23+
void testMissingVersionStatement() {
24+
Root.indexBuildSession(() -> {
25+
var tu = p.parseTranslationUnit(";");
26+
assertNull(tu.versionStatement);
27+
});
28+
}
29+
30+
@Test
31+
void testMissingProfile() {
32+
Root.indexBuildSession(() -> {
33+
var tu = p.parseTranslationUnit("#version 330\n;");
34+
assertNotNull(tu.versionStatement);
35+
assertNull(tu.versionStatement.profile);
36+
assertEquals(Version.GLSL33, tu.versionStatement.version);
37+
});
38+
}
39+
40+
@Test
41+
void testVersionWithProfile() {
42+
Root.indexBuildSession(() -> {
43+
var tu = p.parseTranslationUnit("#version 330 core\n;");
44+
assertNotNull(tu.versionStatement);
45+
assertEquals(Profile.CORE, tu.versionStatement.profile);
46+
assertEquals(Version.GLSL33, tu.versionStatement.version);
47+
});
48+
}
49+
50+
@Test
51+
void testVersionWithProfile2() {
52+
Root.indexBuildSession(() -> {
53+
var tu = p.parseTranslationUnit("#version 140 compatibility\n;");
54+
assertNotNull(tu.versionStatement);
55+
assertEquals(Profile.COMPATIBILITY, tu.versionStatement.profile);
56+
assertEquals(Version.GLSL14, tu.versionStatement.version);
57+
});
58+
}
59+
}

glsl-transformer/src/test/java/io/github/douira/glsl_transformer/ast/transform/SingleASTTransformerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,11 @@ void testParseNewKeywords() {
287287
p.parseSeparateExternalDeclaration("void foo(sampler2D sample) { }");
288288
}, "It should throw if keywords are used as identifiers.");
289289
assertThrows(ParseCancellationException.class, () -> {
290-
p.getLexer().version = Version.GL40;
290+
p.getLexer().version = Version.GLSL40;
291291
p.parseSeparateExternalDeclaration("void foo(sampler2D sample) { }");
292292
}, "It should throw if keywords are used as identifiers.");
293293
assertDoesNotThrow(() -> {
294-
p.getLexer().version = Version.GL33;
294+
p.getLexer().version = Version.GLSL33;
295295
p.parseSeparateExternalDeclaration("void foo(sampler2D sample) { }");
296296
}, "It should not throw if disabled keywords are used as identifiers.");
297297
}

0 commit comments

Comments
 (0)