Skip to content

Commit 5fe035c

Browse files
fix(haxe) fix new keyword false positives (#3993)
1 parent c813674 commit 5fe035c

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

CHANGES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Core Grammars:
3030
- fix(types) fix interface LanguageDetail > keywords [Patrick Chiu]
3131
- enh(java) add `goto` to be recognized as a keyword in Java [Alvin Joy][]
3232
- enh(bash) add keyword `sudo` [Alvin Joy][]
33+
- fix(haxe) captures `new` keyword without capturing it within variables/class names [Cameron Taylor][]
3334
- fix(go) fix go number literals to accept `_` separators, add hex p exponents [Lisa Ugray][]
3435
- enh(markdown) add entity support [David Schach][] [TaraLei][]
3536
- enh(css) add `justify-items` and `justify-self` attributes [Vasily Polovnyov][]
@@ -75,12 +76,14 @@ Themes:
7576
[Alvin Joy]: https://github.com/alvinsjoy
7677
[Lisa Ugray]: https://github.com/lugray
7778
[TaraLei]: https://github.com/TaraLei
79+
[Cameron Taylor]: https://github.com/ninjamuffin99
7880
[Vasily Polovnyov]: https://github.com/vast
7981
[Arman Uguray]: https://github.com/armansito
8082
[Rúnar Bjarnason]: https://github.com/runarorama
8183
[Carl Räfting]: https://github.com/carlrafting
8284

8385

86+
8487
## Version 11.9.0
8588

8689
CAVEATS / POTENTIALLY BREAKING CHANGES

src/languages/haxe.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export default function(hljs) {
8989
},
9090
{
9191
className: 'type', // instantiation
92-
begin: /new */,
92+
beginKeywords: 'new',
9393
end: /\W/,
9494
excludeBegin: true,
9595
excludeEnd: true

test/markup/haxe/default.expect.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
<span class="hljs-title class_"><span class="hljs-keyword">class</span> <span class="hljs-title">Main</span> <span class="hljs-keyword"><span class="hljs-keyword">extends</span> <span class="hljs-type">BaseClass</span></span> <span class="hljs-keyword"><span class="hljs-keyword">implements</span> <span class="hljs-type">SomeFunctionality</span></span> </span>{
8686
<span class="hljs-keyword">var</span> callback:<span class="hljs-type">Void-&gt;Void </span>= <span class="hljs-literal">null</span>;
87-
<span class="hljs-keyword">var</span> myArray:<span class="hljs-type">Array</span>&lt;<span class="hljs-keyword">Float</span>&gt; = <span class="hljs-keyword">new</span> <span class="hljs-type">Array</span>&lt;<span class="hljs-keyword">Float</span>&gt;();
87+
<span class="hljs-keyword">var</span> myArray:<span class="hljs-type">Array</span>&lt;<span class="hljs-keyword">Float</span>&gt; = <span class="hljs-keyword">new</span><span class="hljs-type"></span> <span class="hljs-keyword">Array</span>&lt;<span class="hljs-keyword">Float</span>&gt;();
8888
<span class="hljs-keyword">var</span> arr = [<span class="hljs-number">4</span>,<span class="hljs-number">8</span>,<span class="hljs-number">0</span>,<span class="hljs-number">3</span>,<span class="hljs-number">9</span>,<span class="hljs-number">1</span>,<span class="hljs-number">5</span>,<span class="hljs-number">2</span>,<span class="hljs-number">6</span>,<span class="hljs-number">7</span>];
8989

9090
<span class="hljs-keyword">public</span> <span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">new</span></span>(x) {
@@ -120,8 +120,8 @@
120120
done = <span class="hljs-literal">true</span>;
121121
}
122122

123-
<span class="hljs-keyword">var</span> H:<span class="hljs-type">Int </span>= <span class="hljs-keyword">cast</span> <span class="hljs-keyword">new</span> <span class="hljs-type">MyAbstract</span>(<span class="hljs-number">42</span>);
124-
<span class="hljs-keyword">var</span> h:<span class="hljs-type">Int </span>= <span class="hljs-keyword">cast</span>(<span class="hljs-keyword">new</span> <span class="hljs-type">MyAbstract</span>(<span class="hljs-number">31</span>), <span class="hljs-keyword">Int</span>);
123+
<span class="hljs-keyword">var</span> H:<span class="hljs-type">Int </span>= <span class="hljs-keyword">cast</span> <span class="hljs-keyword">new</span><span class="hljs-type"></span> MyAbstract(<span class="hljs-number">42</span>);
124+
<span class="hljs-keyword">var</span> h:<span class="hljs-type">Int </span>= <span class="hljs-keyword">cast</span>(<span class="hljs-keyword">new</span><span class="hljs-type"></span> MyAbstract(<span class="hljs-number">31</span>), <span class="hljs-keyword">Int</span>);
125125

126126
<span class="hljs-keyword">try</span> {
127127
<span class="hljs-keyword">throw</span> <span class="hljs-string">&quot;error&quot;</span>;
@@ -130,7 +130,7 @@
130130
<span class="hljs-built_in">trace</span>(err);
131131
}
132132

133-
<span class="hljs-keyword">var</span> map = <span class="hljs-keyword">new</span> <span class="hljs-type">haxe</span>.ds.IntMap&lt;<span class="hljs-keyword">String</span>&gt;();
133+
<span class="hljs-keyword">var</span> map = <span class="hljs-keyword">new</span><span class="hljs-type"></span> haxe.ds.IntMap&lt;<span class="hljs-keyword">String</span>&gt;();
134134
<span class="hljs-keyword">var</span> f = map.<span class="hljs-keyword">set</span>.bind(<span class="hljs-literal">_</span>, <span class="hljs-string">&quot;12&quot;</span>);
135135
}
136136

@@ -175,4 +175,10 @@
175175
<span class="hljs-keyword">if</span>( lo &lt; j ) quicksort( lo, j );
176176
<span class="hljs-keyword">if</span>( i &lt; hi ) quicksort( i, hi );
177177
}
178+
179+
<span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">generateNewArray</span></span>(newArray:<span class="hljs-type">Array</span>):<span class="hljs-type">Void </span>{
180+
<span class="hljs-keyword">var</span> i = newArray;
181+
<span class="hljs-keyword">var</span> array = <span class="hljs-keyword">new</span><span class="hljs-type"></span> <span class="hljs-keyword">Array</span>();
182+
}
183+
178184
}

test/markup/haxe/default.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,10 @@ class Main extends BaseClass implements SomeFunctionality {
175175
if( lo < j ) quicksort( lo, j );
176176
if( i < hi ) quicksort( i, hi );
177177
}
178+
179+
function generateNewArray(newArray:Array):Void {
180+
var i = newArray;
181+
var array = new Array();
182+
}
183+
178184
}

0 commit comments

Comments
 (0)