Skip to content

Commit ebbbeb7

Browse files
Merge pull request scala#95 from nicolasstucki/support-exports
Support `export`
2 parents 2f0a8b2 + a67d959 commit ebbbeb7

File tree

2 files changed

+153
-0
lines changed

2 files changed

+153
-0
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,67 @@ export const scalaTmLanguage: TmLanguage = {
111111
],
112112
name: 'meta.import.scala'
113113
},
114+
exports: {
115+
end: '(?<=[\\n;])',
116+
begin: '\\b(export)\\s+(given\\s+)?',
117+
beginCaptures: {
118+
'1': {
119+
name: 'keyword.other.export.scala'
120+
},
121+
'2': {
122+
name: 'keyword.other.given.scala'
123+
}
124+
},
125+
patterns: [
126+
{
127+
include: '#comments'
128+
},
129+
{
130+
match: `(${backQuotedId}|${plainid})`,
131+
name: 'entity.name.export.scala'
132+
},
133+
{
134+
match: '\\.',
135+
name: 'punctuation.definition.export'
136+
},
137+
{
138+
end: '}',
139+
begin: '{',
140+
beginCaptures: {
141+
'0': {
142+
name: 'meta.bracket.scala'
143+
}
144+
},
145+
patterns: [
146+
{
147+
match: `(?x)\\s*(${backQuotedId}|${plainid})\\s*(=>)\\s*(${backQuotedId}|${plainid})\\s*`,
148+
captures: {
149+
'1': {
150+
name: 'entity.name.export.renamed-from.scala'
151+
},
152+
'2': {
153+
name: 'keyword.other.arrow.scala'
154+
},
155+
'3': {
156+
name: 'entity.name.export.renamed-to.scala'
157+
}
158+
}
159+
},
160+
{
161+
match: '([^\\s.,}]+)',
162+
name: 'entity.name.export.scala'
163+
}
164+
],
165+
endCaptures: {
166+
'0': {
167+
name: 'meta.bracket.scala'
168+
}
169+
},
170+
name: 'meta.export.selector.scala'
171+
}
172+
],
173+
name: 'meta.export.scala'
174+
},
114175
constants: {
115176
patterns: [
116177
{
@@ -156,6 +217,9 @@ export const scalaTmLanguage: TmLanguage = {
156217
{
157218
include: '#imports'
158219
},
220+
{
221+
include: '#exports'
222+
},
159223
{
160224
include: '#comments'
161225
},

tests/unit/exports.test.scala

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
// SYNTAX TEST "source.scala"
2+
3+
export
4+
// ^^^^^^ meta.export.scala keyword.other.export.scala
5+
6+
7+
export a.x
8+
// ^^^^^^ meta.export.scala keyword.other.export.scala
9+
// ^ meta.export.scala
10+
// ^ meta.export.scala entity.name.export.scala
11+
// ^ meta.export.scala punctuation.definition.export
12+
// ^ meta.export.scala entity.name.export.scala
13+
14+
export a._
15+
// ^^^^^^ meta.export.scala keyword.other.export.scala
16+
// ^ meta.export.scala
17+
// ^ meta.export.scala entity.name.export.scala
18+
// ^ meta.export.scala punctuation.definition.export
19+
// ^ meta.export.scala entity.name.export.scala
20+
21+
export a.{x, y}
22+
// ^^^^^^ meta.export.scala keyword.other.export.scala
23+
// ^ meta.export.scala
24+
// ^ meta.export.scala entity.name.export.scala
25+
// ^ meta.export.scala punctuation.definition.export
26+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
27+
// ^ meta.export.scala entity.name.export.scala
28+
// ^^ meta.export.scala meta.export.selector.scala
29+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.scala
30+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
31+
32+
export a.{x => y}
33+
// ^^^^^^ meta.export.scala keyword.other.export.scala
34+
// ^ meta.export.scala
35+
// ^ meta.export.scala entity.name.export.scala
36+
// ^ meta.export.scala punctuation.definition.export
37+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
38+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.renamed-from.scala
39+
// ^ meta.export.scala meta.export.selector.scala
40+
// ^^ meta.export.scala meta.export.selector.scala
41+
// ^ meta.export.scala meta.export.selector.scala
42+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.renamed-to.scala
43+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
44+
45+
export given
46+
// ^^^^^^ meta.export.scala keyword.other.export.scala
47+
// ^^^^^ meta.export.scala
48+
49+
export given a.x
50+
// ^^^^^^ meta.export.scala keyword.other.export.scala
51+
// ^^^^ meta.export.scala
52+
// ^ meta.export.scala
53+
// ^ meta.export.scala entity.name.export.scala
54+
// ^ meta.export.scala punctuation.definition.export
55+
// ^ meta.export.scala entity.name.export.scala
56+
57+
export given a._
58+
// ^^^^^^ meta.export.scala keyword.other.export.scala
59+
// ^^^^^ meta.export.scala
60+
// ^ meta.export.scala
61+
// ^ meta.export.scala entity.name.export.scala
62+
// ^ meta.export.scala punctuation.definition.export
63+
// ^ meta.export.scala entity.name.export.scala
64+
65+
export given a.{x, y}
66+
// ^^^^^^ meta.export.scala keyword.other.export.scala
67+
// ^^^^^ meta.export.scala
68+
// ^ meta.export.scala
69+
// ^ meta.export.scala entity.name.export.scala
70+
// ^ meta.export.scala punctuation.definition.export
71+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
72+
// ^ meta.export.scala entity.name.export.scala
73+
// ^^ meta.export.scala meta.export.selector.scala
74+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.scala
75+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
76+
77+
export given a.{x => y}
78+
// ^^^^^^ meta.export.scala keyword.other.export.scala
79+
// ^^^^^ meta.export.scala
80+
// ^ meta.export.scala
81+
// ^ meta.export.scala entity.name.export.scala
82+
// ^ meta.export.scala punctuation.definition.export
83+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala
84+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.renamed-from.scala
85+
// ^ meta.export.scala meta.export.selector.scala
86+
// ^^ meta.export.scala meta.export.selector.scala
87+
// ^ meta.export.scala meta.export.selector.scala
88+
// ^ meta.export.scala meta.export.selector.scala entity.name.export.renamed-to.scala
89+
// ^ meta.export.scala meta.export.selector.scala meta.bracket.scala

0 commit comments

Comments
 (0)