From e6173867203995d3725011cfc56310a31c80c57d Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:44:38 -0500 Subject: [PATCH 01/14] Copy the basic keyword types from Xcode --- src/basic-languages/swift/swift.ts | 167 ++++++++++++++++------------- 1 file changed, 92 insertions(+), 75 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 2ecef407..dcf15251 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -61,81 +61,98 @@ export const language = { '__FILE__', '__FUNCTION__', '__LINE__', - 'as', - 'as!', - 'as?', - 'associativity', - 'break', - 'case', - 'catch', - 'class', - 'continue', - 'convenience', - 'default', - 'deinit', - 'didSet', - 'do', - 'dynamic', - 'dynamicType', - 'else', - 'enum', - 'extension', - 'fallthrough', - 'fileprivate', - 'final', - 'for', - 'func', - 'get', - 'guard', - 'if', - 'import', - 'in', - 'infix', - 'init', - 'inout', - 'internal', - 'is', - 'lazy', - 'left', - 'let', - 'mutating', - 'nil', - 'none', - 'nonmutating', - 'operator', - 'optional', - 'override', - 'postfix', - 'precedence', - 'prefix', - 'private', - 'protocol', - 'Protocol', - 'public', - 'repeat', - 'required', - 'return', - 'right', - 'self', - 'Self', - 'set', - 'static', - 'struct', - 'subscript', - 'super', - 'switch', - 'throw', - 'throws', - 'try', - 'try!', - 'Type', - 'typealias', - 'unowned', - 'var', - 'weak', - 'where', - 'while', - 'willSet', + 'Any', + 'Protocol', + 'Self', + 'Type', + 'actor', + 'as', + 'assignment', + 'associatedtype', + 'associativity', + 'async', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'continue', + 'convenience', + 'default', + 'defer', + 'deinit', + 'didSet', + 'do', + 'dynamic', + 'dynamicType', + 'else', + 'enum', + 'extension', + 'fallthrough', + 'false', + 'fileprivate', + 'final', + 'for', + 'func', + 'get', + 'guard', + 'higherThan', + 'if', + 'import', + 'in', + 'indirect', + 'infix', + 'init', + 'inout', + 'internal', + 'is', + 'isolated', + 'lazy', + 'left', + 'let', + 'lowerThan', + 'mutating', + 'nil', + 'none', + 'nonisolated', + 'nonmutating', + 'open', + 'operator', + 'optional', + 'override', + 'postfix', + 'precedence', + 'precedencegroup', + 'prefix', + 'private', + 'protocol', + 'public', + 'repeat', + 'required', + 'rethrows', + 'return', + 'right', + 'safe', + 'self', + 'set', + 'some', + 'static', + 'struct', + 'subscript', + 'super', + 'switch', + 'throw', + 'throws', + 'true', + 'try', + 'typealias', + 'unowned', + 'unsafe', + 'var', + 'weak', + 'where', + 'while', + 'willSet', 'FALSE', 'TRUE' ], From c31bb1eab8c721b1cafc9cf06d51167281dde563 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:49:09 -0500 Subject: [PATCH 02/14] Fix the all-caps keywords that changes to words prefixed by # --- src/basic-languages/swift/swift.ts | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index dcf15251..66513122 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -57,14 +57,32 @@ export const language = { ], accessmodifiers: ['public', 'private', 'fileprivate', 'internal'], keywords: [ - '__COLUMN__', - '__FILE__', - '__FUNCTION__', - '__LINE__', + '#available', + '#colorLiteral', + '#column', + '#dsohandle', + '#else', + '#elseif', + '#endif', + '#error', + '#file', + '#fileID', + '#fileLiteral', + '#filePath', + '#function', + '#if', + '#imageLiteral', + '#keyPath', + '#line', + '#selector', + '#sourceLocation', + '#warning', + 'Any', 'Protocol', 'Self', 'Type', + 'actor', 'as', 'assignment', @@ -152,9 +170,7 @@ export const language = { 'weak', 'where', 'while', - 'willSet', - 'FALSE', - 'TRUE' + 'willSet' ], symbols: /[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/, From 860d306c8485958a214a3b1e2d6e2ac68e73860d Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:50:38 -0500 Subject: [PATCH 03/14] Add "open" access modifier and reorder from most to least restrictive --- src/basic-languages/swift/swift.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 66513122..3c66b579 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -55,7 +55,7 @@ export const language = { '@IBInspectable', '@IBOutlet' ], - accessmodifiers: ['public', 'private', 'fileprivate', 'internal'], + accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ '#available', '#colorLiteral', From 70ff052f2c94a1557fc477d41735075d2165bdec Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:52:52 -0500 Subject: [PATCH 04/14] Working around glitch with GitHub markdown --- src/basic-languages/swift/swift.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 3c66b579..8ebd95cd 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -76,13 +76,9 @@ export const language = { '#line', '#selector', '#sourceLocation', - '#warning', - - 'Any', - 'Protocol', + '#warning','Any','Protocol', 'Self', 'Type', - 'actor', 'as', 'assignment', From cfa9035aa520b75a4fe4518f54e45ffebe594319 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:54:17 -0500 Subject: [PATCH 05/14] Indentation fixed --- src/basic-languages/swift/swift.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 8ebd95cd..34835493 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -76,9 +76,13 @@ export const language = { '#line', '#selector', '#sourceLocation', - '#warning','Any','Protocol', + '#warning', + + 'Any', + 'Protocol', 'Self', 'Type', + 'actor', 'as', 'assignment', From 1943ce5ecc6f63cea72a5f24590bb45dad8ad061 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:54:47 -0500 Subject: [PATCH 06/14] Or not --- src/basic-languages/swift/swift.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 34835493..9dc3a9f9 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -57,7 +57,7 @@ export const language = { ], accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ - '#available', + '#available', '#colorLiteral', '#column', '#dsohandle', From 3ed28633bd9c8e238d32a64dd5cfd0429a4678a4 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 13:59:16 -0500 Subject: [PATCH 07/14] Add double-underscored keywords (indention is too corrupted to fix - a mess of tabs instead of spaces) --- src/basic-languages/swift/swift.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 9dc3a9f9..bba52aec 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -170,7 +170,10 @@ export const language = { 'weak', 'where', 'while', - 'willSet' + 'willSet', + + '__consuming', + '__owned' ], symbols: /[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/, From 7fc2b23c7e71e23f2e47102ab05977159aba2f4a Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 14:02:49 -0500 Subject: [PATCH 08/14] Changed spaces to tabs --- src/basic-languages/swift/swift.ts | 232 ++++++++++++++--------------- 1 file changed, 116 insertions(+), 116 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index bba52aec..be3981b9 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -57,123 +57,123 @@ export const language = { ], accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ - '#available', - '#colorLiteral', - '#column', - '#dsohandle', - '#else', - '#elseif', - '#endif', - '#error', - '#file', - '#fileID', - '#fileLiteral', - '#filePath', - '#function', - '#if', - '#imageLiteral', - '#keyPath', - '#line', - '#selector', - '#sourceLocation', - '#warning', - - 'Any', - 'Protocol', - 'Self', - 'Type', - - 'actor', - 'as', - 'assignment', - 'associatedtype', - 'associativity', - 'async', - 'await', - 'break', - 'case', - 'catch', - 'class', - 'continue', - 'convenience', - 'default', - 'defer', - 'deinit', - 'didSet', - 'do', - 'dynamic', - 'dynamicType', - 'else', - 'enum', - 'extension', - 'fallthrough', - 'false', - 'fileprivate', - 'final', - 'for', - 'func', - 'get', - 'guard', - 'higherThan', - 'if', - 'import', - 'in', - 'indirect', - 'infix', - 'init', - 'inout', - 'internal', - 'is', - 'isolated', - 'lazy', - 'left', - 'let', - 'lowerThan', - 'mutating', - 'nil', - 'none', - 'nonisolated', - 'nonmutating', - 'open', - 'operator', - 'optional', - 'override', - 'postfix', - 'precedence', - 'precedencegroup', - 'prefix', - 'private', - 'protocol', - 'public', - 'repeat', - 'required', - 'rethrows', - 'return', - 'right', - 'safe', - 'self', - 'set', - 'some', - 'static', - 'struct', - 'subscript', - 'super', - 'switch', - 'throw', - 'throws', - 'true', - 'try', - 'typealias', - 'unowned', - 'unsafe', - 'var', - 'weak', - 'where', - 'while', - 'willSet', + '#available', + '#colorLiteral', + '#column', + '#dsohandle', + '#else', + '#elseif', + '#endif', + '#error', + '#file', + '#fileID', + '#fileLiteral', + '#filePath', + '#function', + '#if', + '#imageLiteral', + '#keyPath', + '#line', + '#selector', + '#sourceLocation', + '#warning', - '__consuming', - '__owned' + 'Any', + 'Protocol', + 'Self', + 'Type', + + 'actor', + 'as', + 'assignment', + 'associatedtype', + 'associativity', + 'async', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'continue', + 'convenience', + 'default', + 'defer', + 'deinit', + 'didSet', + 'do', + 'dynamic', + 'dynamicType', + 'else', + 'enum', + 'extension', + 'fallthrough', + 'false', + 'fileprivate', + 'final', + 'for', + 'func', + 'get', + 'guard', + 'higherThan', + 'if', + 'import', + 'in', + 'indirect', + 'infix', + 'init', + 'inout', + 'internal', + 'is', + 'isolated', + 'lazy', + 'left', + 'let', + 'lowerThan', + 'mutating', + 'nil', + 'none', + 'nonisolated', + 'nonmutating', + 'open', + 'operator', + 'optional', + 'override', + 'postfix', + 'precedence', + 'precedencegroup', + 'prefix', + 'private', + 'protocol', + 'public', + 'repeat', + 'required', + 'rethrows', + 'return', + 'right', + 'safe', + 'self', + 'set', + 'some', + 'static', + 'struct', + 'subscript', + 'super', + 'switch', + 'throw', + 'throws', + 'true', + 'try', + 'typealias', + 'unowned', + 'unsafe', + 'var', + 'weak', + 'where', + 'while', + 'willSet', + + '__consuming', + '__owned' ], symbols: /[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/, From 41ff265429212b81e994c0def92e2292d6130edc Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 14:05:44 -0500 Subject: [PATCH 09/14] Copy attribute keywords from Xcode --- src/basic-languages/swift/swift.ts | 50 ++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index be3981b9..64763750 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -40,20 +40,44 @@ export const language = { identifier: /[a-zA-Z_][\w$]*/, // TODO(owensd): Support the @availability macro properly. attributes: [ + '@GKInspectable', + '@IBAction', + '@IBDesignable', + '@IBInspectable', + '@IBOutlet', + '@IBSegueAction', + '@NSApplicationMain', + '@NSCopying', + '@NSManaged', + '@Sendable', + '@UIApplicationMain', + '@autoclosure', - '@noescape', - '@noreturn', - '@NSApplicationMain', - '@NSCopying', - '@NSManaged', - '@objc', - '@UIApplicationMain', - '@noreturn', - '@availability', - '@IBAction', - '@IBDesignable', - '@IBInspectable', - '@IBOutlet' + '@actorIndependent', + '@asyncHandler', + '@available', + '@convention', + '@discardableResult', + '@dynamicCallable', + '@dynamicMemberLookup', + '@escaping', + '@frozen', + '@globalActor', + '@inlinable', + '@inline', + '@main', + '@nonobjc', + '@noreturn', + '@objc', + '@objcMembers', + '@propertyWrapper', + '@requires_stored_property_inits', + '@resultBuilder', + '@testable', + '@unchecked', + '@unknown', + '@usableFromInline', + '@warn_unqualified_access', ], accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ From 491d70bdaad0f9ffb8e4f60d7575dc9125c525cf Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 14:07:18 -0500 Subject: [PATCH 10/14] Use tabs instead of spaces --- src/basic-languages/swift/swift.ts | 72 +++++++++++++++--------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 64763750..c7adefdc 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -41,43 +41,43 @@ export const language = { // TODO(owensd): Support the @availability macro properly. attributes: [ '@GKInspectable', - '@IBAction', - '@IBDesignable', - '@IBInspectable', - '@IBOutlet', - '@IBSegueAction', - '@NSApplicationMain', - '@NSCopying', - '@NSManaged', - '@Sendable', - '@UIApplicationMain', - + '@IBAction', + '@IBDesignable', + '@IBInspectable', + '@IBOutlet', + '@IBSegueAction', + '@NSApplicationMain', + '@NSCopying', + '@NSManaged', + '@Sendable', + '@UIApplicationMain', + '@autoclosure', - '@actorIndependent', - '@asyncHandler', - '@available', - '@convention', - '@discardableResult', - '@dynamicCallable', - '@dynamicMemberLookup', - '@escaping', - '@frozen', - '@globalActor', - '@inlinable', - '@inline', - '@main', - '@nonobjc', - '@noreturn', - '@objc', - '@objcMembers', - '@propertyWrapper', - '@requires_stored_property_inits', - '@resultBuilder', - '@testable', - '@unchecked', - '@unknown', - '@usableFromInline', - '@warn_unqualified_access', + '@actorIndependent', + '@asyncHandler', + '@available', + '@convention', + '@discardableResult', + '@dynamicCallable', + '@dynamicMemberLookup', + '@escaping', + '@frozen', + '@globalActor', + '@inlinable', + '@inline', + '@main', + '@nonobjc', + '@noreturn', + '@objc', + '@objcMembers', + '@propertyWrapper', + '@requires_stored_property_inits', + '@resultBuilder', + '@testable', + '@unchecked', + '@unknown', + '@usableFromInline', + '@warn_unqualified_access', ], accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ From 899a8eb798ca6d3251009caf386ac74d3573db4d Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 14:13:34 -0500 Subject: [PATCH 11/14] Add differentiation keywords --- src/basic-languages/swift/swift.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index c7adefdc..a5f7a41e 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -57,6 +57,8 @@ export const language = { '@asyncHandler', '@available', '@convention', + '@derivative', // Swift for TensorFlow + '@differentiable', // Swift for TensorFlow '@discardableResult', '@dynamicCallable', '@dynamicMemberLookup', From 911545031d678aed7e29b9fc2717e211fc06f3ad Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Sun, 26 Dec 2021 14:14:47 -0500 Subject: [PATCH 12/14] No need for this TODO --- src/basic-languages/swift/swift.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index a5f7a41e..92c206b4 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -38,7 +38,7 @@ export const language = { // TODO(owensd): Support the full range of unicode valid identifiers. identifier: /[a-zA-Z_][\w$]*/, - // TODO(owensd): Support the @availability macro properly. + attributes: [ '@GKInspectable', '@IBAction', From 22487ca8e1fa9e827f6c9abd0e3dd59f96c28526 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Mon, 3 Jan 2022 07:04:02 -0500 Subject: [PATCH 13/14] Changes from prettier --- src/basic-languages/swift/swift.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/basic-languages/swift/swift.ts b/src/basic-languages/swift/swift.ts index 92c206b4..4a4e7a10 100644 --- a/src/basic-languages/swift/swift.ts +++ b/src/basic-languages/swift/swift.ts @@ -38,7 +38,7 @@ export const language = { // TODO(owensd): Support the full range of unicode valid identifiers. identifier: /[a-zA-Z_][\w$]*/, - + attributes: [ '@GKInspectable', '@IBAction', @@ -51,7 +51,7 @@ export const language = { '@NSManaged', '@Sendable', '@UIApplicationMain', - + '@autoclosure', '@actorIndependent', '@asyncHandler', @@ -79,7 +79,7 @@ export const language = { '@unchecked', '@unknown', '@usableFromInline', - '@warn_unqualified_access', + '@warn_unqualified_access' ], accessmodifiers: ['open', 'public', 'internal', 'fileprivate', 'private'], keywords: [ @@ -103,12 +103,12 @@ export const language = { '#selector', '#sourceLocation', '#warning', - + 'Any', 'Protocol', 'Self', 'Type', - + 'actor', 'as', 'assignment', @@ -197,7 +197,7 @@ export const language = { 'where', 'while', 'willSet', - + '__consuming', '__owned' ], From 29454a6a531fba213ea746cee0109b5ac7aa4859 Mon Sep 17 00:00:00 2001 From: Philip Turner Date: Mon, 3 Jan 2022 09:42:12 -0500 Subject: [PATCH 14/14] Update swift.test.ts --- src/basic-languages/swift/swift.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/basic-languages/swift/swift.test.ts b/src/basic-languages/swift/swift.test.ts index 5f5d32f8..ee721030 100644 --- a/src/basic-languages/swift/swift.test.ts +++ b/src/basic-languages/swift/swift.test.ts @@ -9,12 +9,12 @@ testTokenization('swift', [ // Attributes [ { - line: '@noescape', + line: '@escaping', tokens: [ { startIndex: 0, type: 'keyword.control.swift' - } /* '@noescape' */ + } /* '@escaping' */ ] } ],