Skip to content

[5.8] Cherry-pick most changes from main to release/5.8 #1285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
329 commits
Select commit Hold shift + click to select a range
70b505a
Move SyntaxVisitor from gyb to codegen
kimdv Dec 19, 2022
9140aa3
Merge pull request #1201 from kimdv/kimdv/move-syntax-visitor-from-gy…
kimdv Jan 9, 2023
90fcf63
Move Tokens from gyb to codegen
kimdv Dec 17, 2022
41a87f7
Move SyntaxCollections from gyb to codegen
kimdv Dec 19, 2022
fe71fb8
Merge pull request #1199 from kimdv/kimdv/move-token-from-gyb-to-code…
kimdv Jan 9, 2023
7c8540b
Merge pull request #1186 from kimdv/kimdv/move-syntaxcollection-gyb-t…
kimdv Jan 9, 2023
fede50b
Remove dead code
kimdv Jan 9, 2023
5b867de
Drop unneeded imports
DougGregor Jan 7, 2023
ca843c6
Add 'attributed' trait for nodes that can have attributes
DougGregor Jan 10, 2023
2654e44
Regenerate sources
DougGregor Jan 10, 2023
902bdf7
Generalize application of macro attributes to all nodes.
DougGregor Jan 10, 2023
f04885f
Fix build for older compilers
DougGregor Jan 10, 2023
e436aa2
Make Doug code owner of macros and Swift operators
ahoppen Jan 10, 2023
aeed64b
Merge pull request #1204 from kimdv/kimdv/remove-dead-code
kimdv Jan 10, 2023
e40ea73
Move TokenKind from gyb to codegen
kimdv Dec 19, 2022
7c256cd
Remove unused nodes
ahoppen Jan 3, 2023
acc1e43
Merge pull request #1178 from ahoppen/ahoppen/remove-unused-nodes
ahoppen Jan 10, 2023
5307fa1
Merge pull request #1200 from kimdv/kimdv/move-token-token-kind-from-…
kimdv Jan 10, 2023
72d58c7
Merge pull request #1208 from DougGregor/macro-attribute-generalize
DougGregor Jan 10, 2023
8b21dbf
Merge pull request #1209 from ahoppen/ahoppen/doug-codeowner
DougGregor Jan 10, 2023
cb0ddcf
Add an AssertLexemes method to simplify LexerTests
ahoppen Jan 10, 2023
08ed6fd
[Macros] Introduce member declaration macros.
hborla Jan 10, 2023
ca1a61c
[Macros] Recurse into members of DeclGroupSyntax conforming types in the
hborla Jan 10, 2023
459cd14
[SyntaxTraits] Add a DeclGroupSyntax conformance to EnumDeclSyntax.
hborla Jan 10, 2023
251da2a
Regenerate Swift source files.
hborla Jan 10, 2023
0cd203c
[Macros] Allow enums to have member declaration macros.
hborla Jan 10, 2023
61c47e9
[Macros] Factor out common code for getting attributes attached to a …
hborla Jan 10, 2023
39e8e62
[Macros] Return an array of DeclSyntax from MemberDeclarationMacro.ex…
hborla Jan 10, 2023
fd8ee2b
[Macros] Factor more shared code into getMacroAttributes using Attrib…
hborla Jan 10, 2023
696eee6
Remove TokenKind.kind
ahoppen Jan 10, 2023
9a3f6ec
Merge pull request #1213 from ahoppen/ahoppen/assert-lexemes
ahoppen Jan 10, 2023
0a319e2
Fix spacing around `angle`s
kimdv Dec 21, 2022
7934884
Fix spacing for `*` operator
kimdv Dec 25, 2022
0dbae83
Add trailing space for `!` and `?`
kimdv Dec 25, 2022
83e14b9
Add more tests cases
kimdv Jan 3, 2023
0555896
Remove leading and trailing space from `<` and `>`
kimdv Jan 5, 2023
bd71ec6
Fix errors after rebase
kimdv Jan 6, 2023
f167aa4
Add comments to cases
kimdv Jan 6, 2023
a3ef115
Apply cases for all spaced binary operators
kimdv Jan 9, 2023
8345eac
Refactor the lexer to store lexer errors in the tokens instead of hav…
ahoppen Jan 5, 2023
0d2a3fd
Fix formatting.
hborla Jan 10, 2023
42b9184
Merge pull request #1181 from stevapple/accessor-indent
ahoppen Jan 10, 2023
50a322c
Merge pull request #1207 from hborla/member-declaration-macros
hborla Jan 11, 2023
8936b6e
Merge pull request #1164 from kimdv/kimdv/fix-spacing
kimdv Jan 11, 2023
fa99e37
Merge pull request #1211 from ahoppen/ahoppen/remove-tokenkind-kind
ahoppen Jan 11, 2023
f5f6ae2
Merge pull request #1191 from ahoppen/ahoppen/lexer-errors-in-token
ahoppen Jan 11, 2023
0e5987f
Rename `tokenKind` in `Lexeme` to `rawTokenKind`
ahoppen Dec 27, 2022
b8a1761
Allow skipping all long-running tests using a single environment vari…
ahoppen Dec 29, 2022
2a1597f
Explicitly model all supported contextual keywords in the `contextual…
ahoppen Dec 29, 2022
8e6ae6e
Merge pull request #1173 from ahoppen/ahoppen/enumerate-contextual-ke…
ahoppen Jan 11, 2023
5286555
Merge `spacedBinaryOperator` and `unspacedBinaryOperator`
ahoppen Jan 10, 2023
25e71bd
Save 2 bytes in `RawSyntaxData.ParsedToken`
ahoppen Jan 11, 2023
3a10a8f
Make it possible to parse an accessor declaration on its own
DougGregor Jan 11, 2023
8f20e23
Regenerate sources
DougGregor Jan 11, 2023
ddb9802
Add test for accessor declaration interpolation
DougGregor Jan 11, 2023
18f57b6
Adjust for changes on main
DougGregor Jan 11, 2023
80b28f4
Merge pull request #1215 from ahoppen/ahoppen/merge-binary-operators
ahoppen Jan 11, 2023
0d1e0a2
[Macros] Add accessor declaration macros, to add accessors to a store…
DougGregor Jan 11, 2023
251492d
Merge pull request #1216 from DougGregor/accessor-decl-interpolation
DougGregor Jan 11, 2023
8e7c7af
[Macros] Extend the property-wrapper example to also generate backing…
DougGregor Jan 11, 2023
afce931
Reformat
DougGregor Jan 11, 2023
7d3fee6
Fix order of of entries in CODEOWNERS
ahoppen Jan 11, 2023
7784947
Merge pull request #1222 from DougGregor/accessor-declaration-macros
DougGregor Jan 12, 2023
8e9caa1
[Macros] Introduce member attribute macros.
hborla Jan 11, 2023
6a60067
Merge pull request #1223 from ahoppen/ahoppen/update-codeowners
ahoppen Jan 12, 2023
060082e
Merge pull request #1220 from hborla/member-attribute-macros
hborla Jan 12, 2023
115de1d
Rename contextualKeyword -> keyword
ahoppen Jan 11, 2023
f44bf62
Remove Lexeme.isContextualKeyword
ahoppen Jan 11, 2023
883d7da
Use StaticString as the raw value for `Keyword`
ahoppen Jan 11, 2023
db4ab04
Generate Keyword.swift using CodeGeneration
ahoppen Jan 11, 2023
e0ebc46
Migrate access modifier keywords to new keywords infrastructure
ahoppen Jan 11, 2023
e73c73e
Rename isKeyword -> isLexerClassifiedKeyword
ahoppen Jan 11, 2023
d3a8017
Migrate decl keywords to new keywords infrastructure
ahoppen Jan 11, 2023
4e1f59f
Migrate stmt keywords to new keywords infrastructure
ahoppen Jan 11, 2023
8432c4b
Migrate expr keywords to new keywords infrastructure
ahoppen Jan 11, 2023
ab73c54
Merge 'yield' to new keyword infrastructure
ahoppen Jan 11, 2023
ccddf47
Consider wildcard as `Misc` instead of a keyword
ahoppen Jan 11, 2023
9d94925
Remove `KeywordSpec` from TokenSpec.swift and rename ContextualKeywor…
ahoppen Jan 2, 2023
1113a19
Merge pull request #1174 from ahoppen/ahoppen/merge-keywords
ahoppen Jan 12, 2023
ea0e2b2
Merge pull request #1219 from ahoppen/ahoppen/parsedtoken-memory-layout
ahoppen Jan 12, 2023
28cc1b0
Remove handled TODOs from DollarIdentifierTests.swift
ahoppen Dec 6, 2022
59e8e32
Unify AvailabilityCondition and UnavailabilityCondition
ahoppen Jan 11, 2023
dfcf40c
Improve diagnostics for #available nodes in expression positions
ahoppen Jan 11, 2023
b832547
Diagnose && used to separte multiple availability conditions
ahoppen Jan 11, 2023
3f9f008
Remove AvailabilitySpecSource
ahoppen Jan 11, 2023
facfbf4
Improve parsing of platforms and versions in availability conditions
ahoppen Jan 11, 2023
5272e00
Diagnose `||` being used to join platforms in an availability condition
ahoppen Jan 11, 2023
2ce1aa6
Allow creation of debugInitCall without trivia
ahoppen Dec 13, 2022
c96d707
Fix spacings around `!`and `?`
kimdv Jan 11, 2023
b5bf778
Merge pull request #1125 from ahoppen/ahoppen/availability-diags
ahoppen Jan 12, 2023
167643b
Remove tokenList child from `Attribute`
ahoppen Dec 30, 2022
e5f4db5
Rearrange code for attribute parsing to make getting rid of the token…
ahoppen Jan 3, 2023
d783813
Migrate attributes with a single token parameter from TokenList as ar…
ahoppen Jan 12, 2023
6573c72
Migrate @_backDeploy to no longer use token list as argument
ahoppen Jan 3, 2023
d131ee3
Add dedicated node for @_expose arguments
ahoppen Jan 12, 2023
82f02cd
Add dedicated node for @_originallyDefinedIn arguments
ahoppen Jan 12, 2023
7715b3e
Remove `TokenList` as an option for attribute arguments
ahoppen Jan 12, 2023
62bddf9
Remove `stringExpr` as attribute kind
ahoppen Jan 12, 2023
2291aab
Eliminate `NamedAttributeString`
ahoppen Jan 12, 2023
30bbd4e
Merge Attribute and CustomAttribute
ahoppen Jan 12, 2023
a800202
Fix @_effects parsing to contain an arbitrary token list
ahoppen Jan 12, 2023
7a98fdc
Remove special handling for compiler-known attributes that take no ar…
ahoppen Jan 12, 2023
5d22590
Make argument of @_nonSendable optional
ahoppen Jan 12, 2023
719fb6b
Add dedicated node for @_documentation arguments
ahoppen Jan 12, 2023
c9cbc40
Add test case for parsing @Sendable
ahoppen Jan 12, 2023
c5fa09c
Merge pull request #1176 from ahoppen/ahoppen/attributes
ahoppen Jan 12, 2023
6948083
Remove semantic hashbang error
ahoppen Jan 13, 2023
71ef7bf
Disallow `Self` as struct names
ahoppen Dec 6, 2022
95a3cef
Merge pull request #1140 from ahoppen/ahoppen/debuginitcall-without-t…
ahoppen Jan 13, 2023
f3ea90f
Replace `where` parameter in `consume(if:)` and friends by `allowToke…
ahoppen Dec 30, 2022
6d6d5f4
Remove `TokenList` as option for `AvailabilityArgument`
ahoppen Jan 13, 2023
6df9357
Remove the typealiases in SwiftSyntaxBuilder that refer to syntax nod…
ahoppen Jan 4, 2023
b2e2f82
Merge pull request #1175 from ahoppen/ahoppen/no-where-in-consume
ahoppen Jan 13, 2023
f9985dd
Merge pull request #1226 from ahoppen/ahoppen/no-tokenlist-for-availa…
ahoppen Jan 13, 2023
1e61cc3
Merge pull request #1124 from ahoppen/ahoppen/more-diags
ahoppen Jan 13, 2023
0aa125b
Merge pull request #1218 from kimdv/kimdv/fix-spacing-pt-2
kimdv Jan 13, 2023
a0cf4cd
Merge pull request #1183 from ahoppen/ahoppen/remove-swiftsyntaxbuild…
ahoppen Jan 13, 2023
2aa1ddc
Fix a build failure due to PRs racing
ahoppen Jan 13, 2023
4617bc2
Remap identifiers to keywords in `consume(ifAny:)`
ahoppen Jan 12, 2023
dc89ef5
Merge pull request #1229 from ahoppen/ahoppen/fix-build
shahmishal Jan 13, 2023
86734a7
Update swift syntax
kimdv Jan 11, 2023
d37b82a
Update CodeGeneration
ahoppen Jan 13, 2023
e7fc8a9
Merge pull request #1154 from ahoppen/ahoppen/dont-override-trivia
ahoppen Jan 13, 2023
e09c64d
Merge pull request #1230 from ahoppen/ahoppen/update-codegeneration-2…
ahoppen Jan 14, 2023
5545afb
Merge pull request #1224 from ahoppen/ahoppen/remap-consume-ifany
ahoppen Jan 14, 2023
b666801
Introduce a placeholder declaration to represent editor placeholders …
ahoppen Jan 4, 2023
d56ef84
Remove `TokenSyntax` shorthand static members for SwiftSyntaxBuilder
ahoppen Jan 14, 2023
07866cf
Return `nil` as text in `decomposeToRaw` for keywords
ahoppen Jan 11, 2023
30e2888
Merge pull request #1188 from ahoppen/ahoppen/placeholder-decl
ahoppen Jan 14, 2023
4157572
Remove `TokenList` option from `CodeBlockItem`
ahoppen Jan 3, 2023
9193688
Remove `ErrorTokens` from `CodeBlockItem`
ahoppen Jan 3, 2023
267a56c
Remove last usage of `TokenList` for closure specifiers
ahoppen Jan 3, 2023
3916bdb
Merge pull request #1177 from ahoppen/ahoppen/no-tokenlist
ahoppen Jan 14, 2023
0842f41
[Macros] Implement a type wrapper transformation as a macro that conf…
hborla Jan 12, 2023
37d0027
Merge pull request #1225 from hborla/type-wrapper-macro
hborla Jan 14, 2023
2d357b1
Move SyntaxRewriter from gyb to codegen
kimdv Dec 21, 2022
486a86c
Merge pull request #1197 from kimdv/kimdv/move-syntax-rewriter-from-g…
kimdv Jan 15, 2023
c49ed07
Update swift syntax
kimdv Jan 15, 2023
db38e0f
Merge pull request #1235 from kimdv/kimdv/update-swift-syntax
kimdv Jan 16, 2023
abc66e0
Merge pull request #1231 from ahoppen/ahoppen/no-token-shorthand-init…
ahoppen Jan 16, 2023
598e066
Update CodeGeneration for removed shorthand token static members
ahoppen Jan 14, 2023
9345009
Import raw_string.swift test case from the compiler test suite
ahoppen Jan 13, 2023
8042f82
Produce separate tokens for raw string delimiters and string quotes i…
ahoppen Jan 5, 2023
41807be
When eating unexpected tokens in string interpolation, match opened '…
ahoppen Jan 14, 2023
9f166bd
When running CodeGeneration, remove files from templates that no long…
ahoppen Jan 16, 2023
b931534
Merge pull request #1192 from ahoppen/ahoppen/lex-string-delimiteres
ahoppen Jan 16, 2023
fb72bc6
Make peeking in the lexer automatically check for end of file
ahoppen Jan 13, 2023
9dbe501
Split Lexer into multiple files
ahoppen Jan 12, 2023
88e4b84
A few miscellaneous lexer improvements
ahoppen Jan 12, 2023
2f27a9a
Lowercase all variables in the lexer
ahoppen Jan 12, 2023
e7dbd8e
Use argument labels in the lexer
ahoppen Jan 12, 2023
a1362a8
Refactor and document lexer cusor advancing
ahoppen Jan 12, 2023
fc75223
Refactor operator boundness
ahoppen Jan 13, 2023
879053c
Refactor advanceValidatingUTF8Character
ahoppen Jan 13, 2023
5710473
Re-arrange string literal lexing and main lexer entry point
ahoppen Jan 13, 2023
39caacd
Refactor lexUnknown
ahoppen Jan 13, 2023
34b13fe
Refactor lexTrivia
ahoppen Jan 13, 2023
dc8cd52
Add test cases for BOM
ahoppen Jan 13, 2023
95b1c33
Re-arrange some more string-related lexing functions
ahoppen Jan 13, 2023
701d13b
Refactor `lexNumber`
ahoppen Jan 13, 2023
02994da
Refactor lexMagicPoundLiteral
ahoppen Jan 13, 2023
a728bd2
Make operator lexing peek-based
ahoppen Jan 13, 2023
c5e4ef3
Refactor `tryLexRegexLiteral`
ahoppen Jan 13, 2023
c648e85
Make lexUnknown peek-based
ahoppen Jan 13, 2023
050d162
Make `lexImpl` peek-based
ahoppen Jan 13, 2023
8addb9a
Rename `peek(matches:)` to `is(at:)`
ahoppen Jan 13, 2023
759043e
Merge pull request #1227 from ahoppen/ahoppen/refactor-lexer
ahoppen Jan 17, 2023
fb71d50
Create separate `lexImpl` methods for the different lexer states
ahoppen Jan 17, 2023
0c35de4
Merge pull request #1243 from ahoppen/ahoppen/10-leximpl-by-state
ahoppen Jan 18, 2023
4f1412b
Merge pull request #1241 from ahoppen/ahoppen/delete-stale-generated-…
ahoppen Jan 18, 2023
1bc08a6
Merge pull request #1236 from ahoppen/ahoppen/update-codegen-2022-01-14
ahoppen Jan 18, 2023
8b8eb44
Merge pull request #1232 from ahoppen/ahoppen/nil-decompose-to-raw
ahoppen Jan 18, 2023
5a70229
Refactor string lexing to make it easier to work with
ahoppen Jan 17, 2023
69fc41b
Don't fail LoopProgressCondition when consuming zero-length string se…
ahoppen Jan 19, 2023
fbed6c2
Make `TokenSyntax` expressible by string literal and remove convenien…
ahoppen Jan 16, 2023
b046356
In SwiftSyntaxBuilder change String parameters to a custom string int…
ahoppen Jan 16, 2023
23485a0
Escape tab in single-line string literals
ahoppen Jan 19, 2023
4c4f950
Merge pull request #1249 from ahoppen/ahoppen/escape-tab-in-single-li…
ahoppen Jan 19, 2023
42575ee
Merge pull request #1248 from ahoppen/ahoppen/allow-zero-char-progress
ahoppen Jan 19, 2023
e25009e
Merge pull request #1244 from ahoppen/ahoppen/1-refactor-string-lexing
ahoppen Jan 19, 2023
fcc2b00
Merge pull request #1237 from ahoppen/ahoppen/tokensyntax-expressible…
ahoppen Jan 19, 2023
3b652ad
Model state of the lexer as a stack
ahoppen Jan 16, 2023
82c0a48
Lex string literal segments in the lexer and compose them in the parser
ahoppen Jan 18, 2023
e34473f
Add parser knowledge to kick lexer out of string interpolation mode
ahoppen Jan 17, 2023
8d5f89e
Merge `lexInStringLiteral` and `lexStringLiteralContents`
ahoppen Jan 17, 2023
980647f
Merge pull request #1240 from ahoppen/ahoppen/no-string-with-result-b…
ahoppen Jan 20, 2023
0611679
Make trivia expressible by string literal in SwiftSyntaxBuilder
ahoppen Jan 16, 2023
0e44ec7
Address review comments
ahoppen Jan 20, 2023
6d7d66b
Merge pull request #1250 from ahoppen/ahoppen/dont-relex-string-literals
ahoppen Jan 20, 2023
2854249
Merge pull request #1238 from ahoppen/ahoppen/trivia-expressible-by-s…
ahoppen Jan 20, 2023
faa2afc
Remove `HasTrailingComma` protocol
ahoppen Jan 16, 2023
72f9740
Split generation of missing token errors to separate file
ahoppen Jan 17, 2023
e396b43
Merge pull request #1252 from ahoppen/ahoppen/remove-hastrailingcomma
ahoppen Jan 21, 2023
0591633
Merge pull request #1254 from ahoppen/ahoppen/split-missing-token-errors
ahoppen Jan 21, 2023
3b7339f
Model `RawTokenKind` as a struct instead of an enum with an associate…
ahoppen Jan 22, 2023
ab0fd2e
Improve performance of `RawTokenKindMatch` by adding `@inline(__always)`
ahoppen Jan 22, 2023
a899697
Store the lexer's state stack on a bump allocator instad of in an array
ahoppen Jan 22, 2023
f9b3139
Mark all methods in the parser as `mutating`
ahoppen Jan 22, 2023
0d0b70a
Mark some more `SyntaxArena` parameters as `__shared`
ahoppen Jan 22, 2023
8d56221
Add a subcommand to swift-parser-cli to measure performance
ahoppen Jan 22, 2023
457f4b2
Implement basic DiagnosticFormatter coloring
simba909 Jan 23, 2023
eb4797d
Update swift syntax
kimdv Jan 23, 2023
8841fd9
Merge pull request #1258 from kimdv/kimdv/update-swift-syntax
kimdv Jan 24, 2023
4e68377
Move `Trivia` from gyb to code gen
kimdv Jan 16, 2023
e6ae7a9
Make DiagnosticsFormatter.ANSIAnnotation a top-level type
simba909 Jan 24, 2023
fb8ba4b
Allow DiagnosticsFormatter to be initialized directly
simba909 Jan 24, 2023
551ffd4
Merge pull request #1234 from kimdv/kimdv/move-trivia-from-gyn-to-cod…
kimdv Jan 24, 2023
9faf412
Rename ANSIAnnotation.reset to ANSIAnnotation.normal
simba909 Jan 24, 2023
c2741e4
Simplify `token(at:)` implementation slightly
DougGregor Jan 24, 2023
875bcdb
[Macros] Rename macros to match recent pitches
DougGregor Jan 24, 2023
ae15356
Fix formatting
DougGregor Jan 24, 2023
a9eab70
Merge pull request #1257 from ahoppen/ahoppen/performance-improvements
ahoppen Jan 24, 2023
df7458b
Merge pull request #1172 from uhooi/patch-1
ahoppen Jan 25, 2023
af652c9
Add init with `PartialSyntaxNodeString` on `SwitchStmtSyntax`
kimdv Jan 24, 2023
28524a4
Fix an assertion failure if a string literal inside string interpolat…
ahoppen Jan 25, 2023
917f3b9
Merge pull request #1256 from simba909/feature/colored-diagnostics
ahoppen Jan 25, 2023
1a2dbea
Merge pull request #1261 from kimdv/kimdv/add-node-with-body-to-switch
kimdv Jan 25, 2023
3ca3c0b
Merge pull request #1259 from DougGregor/macro-protocol-renames
DougGregor Jan 25, 2023
ba0bd0e
Don't output raw values for `Keyword` enum members
ahoppen Jan 25, 2023
0887fdd
Remove pound keywords token kinds
ahoppen Jan 25, 2023
798c660
Improve diagnostics for effect specifiers
ahoppen Jan 24, 2023
fb05e95
Add init with `PartialSyntaxNodeString` on `VariableDeclSyntax`
kimdv Jan 25, 2023
0283ae6
Merge pull request #1263 from ahoppen/ahoppen/fix-unterminate-string-…
ahoppen Jan 25, 2023
8caa4a7
Add FreestandingMacroSyntax trait for freestanding macros.
DougGregor Jan 25, 2023
5768213
Regenerate sources
DougGregor Jan 26, 2023
93eb479
Merge pull request #1264 from kimdv/kimdv/add-node-with-body-to-varia…
kimdv Jan 26, 2023
82b90a8
Merge pull request #1260 from ahoppen/ahoppen/effect-specifiers
ahoppen Jan 26, 2023
1159abd
Merge pull request #1272 from DougGregor/freestanding-macro-expansion…
DougGregor Jan 26, 2023
92f0d3f
[Macros] Parse top-level macro expansion declarations
rxwei Jan 16, 2023
eeec559
Fix parsing of "return <macro-expansion>"
DougGregor Jan 26, 2023
ececdc2
Fix formatting
DougGregor Jan 26, 2023
1940941
Remove the with<childName> functions on syntax nodes
ahoppen Jan 20, 2023
4918b4b
Diagnose singe-line strings
ahoppen Jan 26, 2023
41a8377
Merge pull request #1271 from DougGregor/parse-top-level-macro-expans…
DougGregor Jan 26, 2023
84429cb
Improve diagnostic if where clause is missing a requirement
ahoppen Jan 26, 2023
7048cec
Improve recovery of misplaced attributes on statements
ahoppen Jan 26, 2023
00c6476
Merge pull request #1253 from ahoppen/ahoppen/remove-with-functions
ahoppen Jan 26, 2023
8dc1819
Implement automatic terminal detection in DiagnosticsFormatter
simba909 Jan 26, 2023
81c8740
Prefix annotated errors and warnings in DiagnosticsFormatter to impro…
simba909 Jan 26, 2023
9fc8f19
Don’t automaticaly conform all decl/stmt/etc. nodes to `ExpressibleBy…
ahoppen Jan 26, 2023
b7d7cd4
Merge pull request #1278 from ahoppen/ahoppen/single-quote-literals
ahoppen Jan 26, 2023
0381f9c
Parse attributes in `#if`
ahoppen Jan 26, 2023
14ddf4e
Merge pull request #1267 from ahoppen/ahoppen/remove-pound-keywords
ahoppen Jan 26, 2023
def3b95
Merge pull request #1280 from simba909/feature/automagically-colored-…
DougGregor Jan 27, 2023
929dad4
Merge pull request #1269 from ahoppen/ahoppen/only-base-nodes-express…
ahoppen Jan 27, 2023
c17f6b0
Merge pull request #1282 from ahoppen/ahoppen/misplaced-attribute-rec…
ahoppen Jan 27, 2023
cb60f52
Merge pull request #1281 from ahoppen/ahoppen/missing-requirement-dia…
ahoppen Jan 27, 2023
a7abc29
Merge pull request #1276 from ahoppen/ahoppen/attribute-if-config
ahoppen Jan 27, 2023
6fda55d
Merge pull request #1265 from ahoppen/ahoppen/no-explict-keyword-raw-…
ahoppen Jan 27, 2023
841c0ec
Revert "Merge pull request #1167 from hborla/pack-expansion-syntax"
ahoppen Jan 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 8 additions & 2 deletions CODEOWNERS → .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
# Order is important. The last matching pattern has the most precedence.

# Owner of anything in SwiftSyntax not owned by anyone else.
# N: Alex Hoppen
# E: [email protected]
* @ahoppen

# Macros
/Sources/_SwiftSyntaxMacros @DougGregor
/Tests/SwiftSyntaxMacrosTest @DougGregor

# SwiftOperators
/Sources/SwiftOperators @DougGregor
/Tests/SwiftOperatorsTest @DougGregor
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ If you are seeing issues regarding a mismatched parser library, try the followin
Tip: Running SwiftSyntax’s self-parse tests takes the majority of testing time. If you want to iterate quickly, you can skip these tests using the following steps:
1. Product -> Scheme -> Edit Scheme…
2. Select the Arguments tab in the Run section
3. Add a `SKIP_SELF_PARSE` environment variable with value `1`
3. Add a `SKIP_LONG_TESTS` environment variable with value `1`

### `lit`-based tests

Expand Down
46 changes: 1 addition & 45 deletions CodeGeneration/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,47 +8,13 @@ let package = Package(
.macOS(.v10_15),
],
products: [
.executable(name: "generate-swiftbasicformat", targets: ["generate-swiftbasicformat"]),
.executable(name: "generate-swiftideutils", targets: ["generate-swiftideutils"]),
.executable(name: "generate-swiftparser", targets: ["generate-swiftparser"]),
.executable(name: "generate-swiftsyntax", targets: ["generate-swiftsyntax"]),
.executable(name: "generate-swiftsyntaxbuilder", targets: ["generate-swiftsyntaxbuilder"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-syntax.git", revision: "74b1286795d6a4e4f5a106638dc99eb482df609d"),
.package(url: "https://github.com/apple/swift-syntax.git", revision: "05916332d79994097ed7780f2fe34d33b16ddd31"),
.package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.1.4")),
],
targets: [
.executableTarget(
name: "generate-swiftbasicformat",
dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"SyntaxSupport",
"Utils"
]
),
.executableTarget(
name: "generate-swiftideutils",
dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"SyntaxSupport",
"Utils"
]
),
.executableTarget(
name: "generate-swiftparser",
dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"SyntaxSupport",
"Utils"
]
),
.executableTarget(
name: "generate-swiftsyntax",
dependencies: [
Expand All @@ -58,16 +24,6 @@ let package = Package(
"SyntaxSupport",
"Utils"
]
),
.executableTarget(
name: "generate-swiftsyntaxbuilder",
dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"SyntaxSupport",
"Utils"
]
),
.target(
name: "SyntaxSupport",
Expand Down
31 changes: 0 additions & 31 deletions CodeGeneration/Sources/SyntaxSupport/AttributeKinds.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -86,37 +86,6 @@ public let TYPE_ATTR_KINDS = [
% end
]

/// Schema for `DeclAttribute`s:
///
/// - Attribute name.
/// - C++ class name without the 'Attr' suffix
/// - Options for the attribute, including:
/// * the declarations the attribute can appear on
/// * whether duplicates are allowed
/// - Unique attribute identifier used for serialization. This
/// can never be changed.
///
/// SimpleDeclAttribute is the same, but the class becomes
/// SimpleDeclAttr<DAK_##NAME> on the C++ side.
///
/// Please help ease code review/audits:
/// - Please place the "OnXYZ" flags together on the next line.
/// - Please place the non-OnXYZ flags together on the next to last line.
/// - Please place the unique code number on the last line.
/// - Please sort attributes by serialization number.
/// - Please create a "NOTE" comment if a unique number is skipped.
///
/// If you're adding a new kind of "attribute" that is spelled without a leading
/// '@' symbol, add an entry to the `DECL_MODIFIER_KINDS` array instead.
///
/// If you're adding a new underscored attribute here, please document it in
/// docs/ReferenceGuides/UnderscoredAttributes.md.
public let DECL_ATTR_KINDS: [Attribute] = [
% for attr in DECL_ATTR_KINDS:
${make_swift_attribute(attr)},
% end
]

/// Schema for declaration modifiers:
///
/// - Modifier name.
Expand Down
231 changes: 231 additions & 0 deletions CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

public struct KeywordSpec {
public var name: String
public var isLexerClassified: Bool
public var requiresLeadingSpace: Bool
public var requiresTrailingSpace: Bool

public var escapedName: String {
if isLexerClassified || name == "Type" || name == "Protocol" {
return "`\(name)`"
} else {
return name
}
}

/// `isLexerClassified` determines whether the token kind is switched from being an identifier to a keyword in the lexer.
/// This is true for keywords that used to be considered non-contextual.
init(_ name: String, isLexerClassified: Bool = false, requiresLeadingSpace: Bool = false, requiresTrailingSpace: Bool = false) {
self.name = name
self.isLexerClassified = isLexerClassified
self.requiresLeadingSpace = requiresLeadingSpace
self.requiresTrailingSpace = requiresTrailingSpace
}
}

public let KEYWORDS: [KeywordSpec] = [
// Please keep these sorted alphabetically

KeywordSpec("__consuming"),
KeywordSpec("__owned"),
KeywordSpec("__setter_access"),
KeywordSpec("__shared"),
KeywordSpec("_alignment"),
KeywordSpec("_backDeploy"),
KeywordSpec("_borrow"),
KeywordSpec("_cdecl"),
KeywordSpec("_Class"),
KeywordSpec("_compilerInitialized"),
KeywordSpec("_const"),
KeywordSpec("_documentation"),
KeywordSpec("_dynamicReplacement"),
KeywordSpec("_effects"),
KeywordSpec("_expose"),
KeywordSpec("_forward"),
KeywordSpec("_implements"),
KeywordSpec("_linear"),
KeywordSpec("_local"),
KeywordSpec("_modify"),
KeywordSpec("_move"),
KeywordSpec("_NativeClass"),
KeywordSpec("_NativeRefCountedObject"),
KeywordSpec("_noMetadata"),
KeywordSpec("_nonSendable"),
KeywordSpec("_objcImplementation"),
KeywordSpec("_objcRuntimeName"),
KeywordSpec("_opaqueReturnTypeOf"),
KeywordSpec("_optimize"),
KeywordSpec("_originallyDefinedIn"),
KeywordSpec("_PackageDescription"),
KeywordSpec("_private"),
KeywordSpec("_projectedValueProperty"),
KeywordSpec("_read"),
KeywordSpec("_RefCountedObject"),
KeywordSpec("_semantics"),
KeywordSpec("_silgen_name"),
KeywordSpec("_specialize"),
KeywordSpec("_spi"),
KeywordSpec("_spi_available"),
KeywordSpec("_swift_native_objc_runtime_base"),
KeywordSpec("_Trivial"),
KeywordSpec("_TrivialAtMost"),
KeywordSpec("_typeEraser"),
KeywordSpec("_unavailableFromAsync"),
KeywordSpec("_UnknownLayout"),
KeywordSpec("actor"),
KeywordSpec("addressWithNativeOwner"),
KeywordSpec("addressWithOwner"),
KeywordSpec("any"),
KeywordSpec("Any", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("as", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("assignment"),
KeywordSpec("associatedtype", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("associativity"),
KeywordSpec("async", requiresTrailingSpace: true),
KeywordSpec("autoclosure"),
KeywordSpec("availability"),
KeywordSpec("available"),
KeywordSpec("await"),
KeywordSpec("before"),
KeywordSpec("break", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("case", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("catch", isLexerClassified: true, requiresLeadingSpace: true),
KeywordSpec("class", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("continue", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("convenience"),
KeywordSpec("convention"),
KeywordSpec("default", isLexerClassified: true),
KeywordSpec("defer", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("deinit", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("deprecated"),
KeywordSpec("derivative"),
KeywordSpec("didSet"),
KeywordSpec("differentiable"),
KeywordSpec("distributed"),
KeywordSpec("do", isLexerClassified: true),
KeywordSpec("dynamic"),
KeywordSpec("each"),
KeywordSpec("else", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("enum", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("escaping"),
KeywordSpec("exclusivity"),
KeywordSpec("exported"),
KeywordSpec("extension", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("fallthrough", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("false", isLexerClassified: true),
KeywordSpec("fileprivate", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("final"),
KeywordSpec("for", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("func", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("get"),
KeywordSpec("guard", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("higherThan"),
KeywordSpec("if", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("import", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("in", isLexerClassified: true, requiresLeadingSpace: true, requiresTrailingSpace: true),
KeywordSpec("indirect"),
KeywordSpec("infix"),
KeywordSpec("init", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("inline"),
KeywordSpec("inout", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("internal", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("introduced"),
KeywordSpec("is", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("isolated"),
KeywordSpec("kind"),
KeywordSpec("lazy"),
KeywordSpec("let", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("lowerThan"),
KeywordSpec("macro"),
KeywordSpec("message"),
KeywordSpec("metadata"),
KeywordSpec("module"),
KeywordSpec("mutableAddressWithNativeOwner"),
KeywordSpec("mutableAddressWithOwner"),
KeywordSpec("mutating"),
KeywordSpec("nil", isLexerClassified: true),
KeywordSpec("noasync"),
KeywordSpec("noDerivative"),
KeywordSpec("noescape"),
KeywordSpec("nonisolated"),
KeywordSpec("nonmutating"),
KeywordSpec("objc"),
KeywordSpec("obsoleted"),
KeywordSpec("of"),
KeywordSpec("open"),
KeywordSpec("operator", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("optional"),
KeywordSpec("override"),
KeywordSpec("package"),
KeywordSpec("postfix"),
KeywordSpec("precedencegroup", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("prefix"),
KeywordSpec("private", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("Protocol"),
KeywordSpec("protocol", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("public", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("reasync"),
KeywordSpec("renamed"),
KeywordSpec("repeat", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("required"),
KeywordSpec("rethrows", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("return", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("reverse"),
KeywordSpec("safe"),
KeywordSpec("self", isLexerClassified: true),
KeywordSpec("Self", isLexerClassified: true),
KeywordSpec("Sendable"),
KeywordSpec("set"),
KeywordSpec("some"),
KeywordSpec("sourceFile"),
KeywordSpec("spi"),
KeywordSpec("spiModule"),
KeywordSpec("static", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("struct", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("subscript", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("super", isLexerClassified: true),
KeywordSpec("swift"),
KeywordSpec("switch", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("target"),
KeywordSpec("throw", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("throws", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("transpose"),
KeywordSpec("true", isLexerClassified: true),
KeywordSpec("try", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("Type"),
KeywordSpec("typealias", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("unavailable"),
KeywordSpec("unchecked"),
KeywordSpec("unowned"),
KeywordSpec("unsafe"),
KeywordSpec("unsafeAddress"),
KeywordSpec("unsafeMutableAddress"),
KeywordSpec("var", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("visibility"),
KeywordSpec("weak"),
KeywordSpec("where", isLexerClassified: true, requiresLeadingSpace: true, requiresTrailingSpace: true),
KeywordSpec("while", isLexerClassified: true, requiresTrailingSpace: true),
KeywordSpec("willSet"),
KeywordSpec("witness_method"),
KeywordSpec("wrt"),
KeywordSpec("yield"),
]

public func keywordsByLength() -> [(Int, [KeywordSpec])] {
var result: [Int: [KeywordSpec]] = [:]
for keyword in KEYWORDS {
result[keyword.name.count, default: []].append(keyword)
}
return result.sorted(by: { $0.key < $1.key })
}
Loading