enh(swift) add parameter pack keywords (#3803)

* Support parameter pack

* Update changes

* Merge and improve test case

* Use scope

* Use keywords in GENERIC_PARAMETERS
This commit is contained in:
Bradley Mackey 2023-06-14 04:09:08 +01:00 committed by GitHub
parent 98be55bf65
commit 4efc51c605
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 0 deletions

View File

@ -12,6 +12,7 @@ Core Grammars:
- fix(haxe) differentiate `abstract` declaration from keyword [Robert Borghese][]
- fix(bash) do not delimit a string by an escaped apostrophe [hancar][]
- enh(swift) support `macro` keyword [Bradley Mackey][]
- enh(swift) support parameter pack keywords [Bradley Mackey][]
Dev tool:
@ -24,6 +25,7 @@ Dev tool:
[Checconio]: https://github.com/Checconio
[Bradley Mackey]: https://github.com/bradleymackey
## Version 11.8.0
Parser engine:

View File

@ -53,6 +53,7 @@ export const keywords = [
'distributed',
'do',
'dynamic', // contextual
'each',
'else',
'enum',
'extension',

View File

@ -300,6 +300,7 @@ export default function(hljs) {
const GENERIC_PARAMETERS = {
begin: /</,
end: />/,
keywords: 'repeat each',
contains: [
...COMMENTS,
TYPE

View File

@ -0,0 +1,7 @@
<span class="hljs-keyword">func</span> <span class="hljs-title function_">expand</span>&lt;<span class="hljs-keyword">each</span> <span class="hljs-type">T</span>, <span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> <span class="hljs-type">U</span>&gt;(<span class="hljs-params">value</span>: (<span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> <span class="hljs-type">T</span>), <span class="hljs-params">other</span>: <span class="hljs-keyword">each</span> <span class="hljs-type">U</span>, <span class="hljs-params">another</span>: <span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> <span class="hljs-type">T</span>) -&gt; (<span class="hljs-keyword">repeat</span> (<span class="hljs-keyword">each</span> <span class="hljs-type">T</span>)<span class="hljs-operator">?</span>) {
<span class="hljs-keyword">return</span> (<span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> value, <span class="hljs-keyword">each</span> value)
}
<span class="hljs-keyword">let</span> x: (<span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> <span class="hljs-type">T</span>) -&gt; <span class="hljs-type">Bool</span> <span class="hljs-operator">=</span> { }
(<span class="hljs-keyword">each</span> <span class="hljs-type">U</span>, <span class="hljs-keyword">repeat</span> <span class="hljs-keyword">each</span> <span class="hljs-type">T</span>)

View File

@ -0,0 +1,7 @@
func expand<each T, repeat each U>(value: (repeat each T), other: each U, another: repeat each T) -> (repeat (each T)?) {
return (repeat each value, each value)
}
let x: (repeat each T) -> Bool = { }
(each U, repeat each T)