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:
parent
98be55bf65
commit
4efc51c605
|
@ -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:
|
||||
|
|
|
@ -53,6 +53,7 @@ export const keywords = [
|
|||
'distributed',
|
||||
'do',
|
||||
'dynamic', // contextual
|
||||
'each',
|
||||
'else',
|
||||
'enum',
|
||||
'extension',
|
||||
|
|
|
@ -300,6 +300,7 @@ export default function(hljs) {
|
|||
const GENERIC_PARAMETERS = {
|
||||
begin: /</,
|
||||
end: />/,
|
||||
keywords: 'repeat each',
|
||||
contains: [
|
||||
...COMMENTS,
|
||||
TYPE
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<span class="hljs-keyword">func</span> <span class="hljs-title function_">expand</span><<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>>(<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>) -> (<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>) -> <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>)
|
|
@ -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)
|
Loading…
Reference in New Issue