Owen Voorhees
43e2d107e1
[SE-0276] Implement multi-pattern catch clauses
...
Like switch cases, a catch clause may now include a comma-
separated list of patterns. The body will be executed if any
one of those patterns is matched.
This patch replaces `CatchStmt` with `CaseStmt` as the children
of `DoCatchStmt` in the AST. This necessitates a number of changes
throughout the compiler, including:
- Parser & libsyntax support for the new syntax and AST structure
- Typechecking of multi-pattern catches, including those which
contain bindings.
- SILGen support
- Code completion updates
- Profiler updates
- Name lookup changes
2020-04-04 09:28:26 -07:00
Rintaro Ishizaki
60341baf62
[SyntaxParse] Refactor generic requirement syntax structure
...
Re-apply a part of 0569cbfb28 after
reverting ASTGen changes. This is still an improvement.
2019-10-21 15:16:56 -07:00
Rintaro Ishizaki
570ed9361f
Revert "Merge pull request #26883 from rintaro/revert-revert-26478-gsoc-2019-parser-types"
...
This reverts commit faaa3a859d , reversing
changes made to 62f947d6ba .
2019-10-14 15:18:05 -07:00
Rintaro Ishizaki
62408b0c78
Revert "Merge pull request #27046 from rintaro/syntaxparse-refactor-type"
...
This reverts commit a7d6612813 , reversing
changes made to 111fb37f74 .
2019-10-14 13:40:24 -07:00
Rintaro Ishizaki
8768832f24
Revert "Merge pull request #27281 from rintaro/reapply-syntaxparse-genericparam"
...
This reverts commit 5d3e8d6c83 , reversing
changes made to 27e881d97e .
2019-10-14 12:46:31 -07:00
Rintaro Ishizaki
baa0ef70b3
Revert "Merge pull request #27286 from nathawes/r55280477-tuple-type-syntax-round-trip"
...
This reverts commit 8555d1b84a , reversing
changes made to e315b6ff6a .
2019-10-14 12:39:44 -07:00
Rintaro Ishizaki
4eadbaa9f6
Revert "Merge pull request #27466 from rintaro/syntaxparse-type"
...
This reverts commit a4fcd26b38 , reversing
changes made to 88ecae4b9a .
2019-10-14 12:19:04 -07:00
Rintaro Ishizaki
2f40f2493b
Revert "Merge pull request #27565 from rintaro/syntaxparse-exprcollection"
...
This reverts commit 1724f5b704 , reversing
changes made to bc1a3eaaa5 .
2019-10-14 12:16:31 -07:00
Rintaro Ishizaki
0e8010d8b9
Revert "Merge pull request #27592 from rintaro/syntaxparse-exprtuple"
...
This reverts commit cdfd1ab2cf , reversing
changes made to eb02f20f99 .
2019-10-14 12:15:48 -07:00
Rintaro Ishizaki
bb08667bf5
[SyntaxParse] Parse tuple/paren expression syntax
2019-10-09 14:48:47 -07:00
Rintaro Ishizaki
0d4cf76ed0
[SyntaxParse] Renew parseListSyntax()
...
Optimize for libSyntax parsing.
The new 'parseListSyntax()' receives a vector storage, passes element
builder to the callback for populating the elements, then automatically
parses trailing commas. Also, it performs automatic recovery if the
element has an error (e.g. Skip until ',' or ')').
2019-10-08 23:11:08 -07:00
Rintaro Ishizaki
f42f60f233
[Syntax] Consolidate 'TupleElement' and 'FunctionCallArgument' kinds
...
into 'TupleExprElement'. They had exact the same layout.
2019-10-07 20:52:11 -07:00
Rintaro Ishizaki
e7e45fd311
[SyntaxParse] Attach 'inout' to the type in tuple type parsing
...
instead of using that as a deprecated use of 'inout'.
2019-10-01 15:41:40 -07:00
Rintaro Ishizaki
dc3f110f60
[SyntaxParse] Modify parseTypeCollection()
...
Now we always construct Array/DictionaryTypeSyntax even if ']' is missing.
2019-10-01 15:41:40 -07:00
Rintaro Ishizaki
7b31d2b4fb
[SyntaxParse] Finish type parsing
...
- Type attributes
- SIL types
2019-10-01 15:40:10 -07:00
Nathan Hawes
e89efa8f81
[parser] Fix tuple type round-tripping issue
...
`public init(a: (b || c))` became `public init(a: )(b || c)` after
round-tripping.
Resolves rdar://problem/55280477
2019-09-20 19:04:41 -07:00
Rintaro Ishizaki
f919b2ddd8
[SyntaxParse] Parse generic parameter clause and generic where clause
2019-09-19 23:09:58 -07:00
Rintaro Ishizaki
c13f68881a
[SyntaxParse] Simplify syntax parsing result facilities
...
- Utilize ignoreToken() to skip tokens while keeping them in syntax tree
- SyntaxParsedResult now holds ParsedRawSyntaxNode and ParserStatus
- Simplify migration support for 'TypeName[]' type
- Use builder for generic argument clause parsing
2019-09-10 10:29:02 -07:00
Rintaro Ishizaki
cb308b7e53
Revert "Revert "[Parser] Decouple the parser from AST creation (part 2)""
...
This reverts commit 8ad3cc8a82 .
2019-08-27 14:36:41 -07:00
Rintaro Ishizaki
8ad3cc8a82
Revert "[Parser] Decouple the parser from AST creation (part 2)"
2019-08-27 12:28:48 -07:00
Jan Svoboda
77924c4b84
[Parser] Decouple the parser from AST creation (part 2)
...
Instead of creating the AST directly in the parser (and libSyntax or
SwiftSyntax via SyntaxParsingContext), make Parser to explicitly create
a tree of ParsedSyntaxNodes. Their OpaqueSyntaxNodes can be either
libSyntax or SwiftSyntax. If AST is needed, it can be generated from the
libSyntax tree.
2019-08-26 19:10:51 +02:00
Rintaro Ishizaki
3ac5a0e9a1
[Syntax] Accept 'self' as IdentifierPatternSyntax
...
rdar://problem/52285009
2019-06-27 14:56:19 -07:00
Jan Svoboda
b0f6168660
[libSyntax] Represent raw string delimiters
2019-05-15 09:15:03 +02:00
kitasuke
9155ed88e0
Use StringLiteralExpr for invalid InterpolatedStringLiteralExpr
2019-05-12 11:23:16 +09:00
kitasuke
b583fef8e2
Consolidate StringInterpolationExpr to StringLiteralExpr
2019-05-12 11:23:00 +09:00
Xi Ge
24f5ba741a
Syntax: add Syntax support for property delegate attributes
...
rdar://50056605
2019-05-02 09:50:40 -07:00
kitasuke
94815fae26
Revert "Revert "SR-10469 Unknown syntax for interpolated string literal""
...
This reverts commit 18dd11ab21 .
2019-04-30 22:35:29 +01:00
Mishal Shah
18dd11ab21
Revert "SR-10469 Unknown syntax for interpolated string literal"
2019-04-29 23:09:58 -07:00
kitasuke
27cb9c4e0c
Add test cases for multi expressions in ExpressionSegment
2019-04-27 21:05:55 +02:00
kitasuke
81ed9cc2f9
Merge branch 'master' into SR-10469-func-call-args_list
2019-04-26 06:29:02 +02:00
kitasuke
abd6dcfece
Change expression kind from Expr to FunctionCallArgumentList
2019-04-23 17:54:26 +09:00
Xi Ge
644b5ecd53
libSyntax: add support for some type. rdar://49398494
2019-04-19 17:10:53 -07:00
Nathan Hawes
1060d1af1c
Merge pull request #24073 from nathawes/inherit-default-values
...
[ParseableInterfaces] Support inheriting default arguments in module interfaces via '= super'
2019-04-18 22:21:35 -07:00
Nathan Hawes
1e1025291d
Add test for the SwiftSyntax tree produced when parsing '= super' in a module interface
2019-04-16 15:21:26 -07:00
Xi Ge
746a88aec8
Syntax: synthesize right brace tokens if they are missing from nominal type decls.
2019-04-15 16:45:26 -07:00
Xi Ge
d4ecf80cc4
Syntax: add a test for self as member to access.
2019-01-17 14:15:53 -08:00
Xi Ge
758e4a28c2
SyntaxNodes: subsume DotSelfExpr and ImplicitMemberExpr by MemberAccessExpr.
...
Per our discussion in another PR, having these three similar nodes at
the same time may unnecessarily complicate client side.
2019-01-17 14:15:53 -08:00
Xi Ge
9c42e9737b
SyntaxNodes: DotSelfExpr should have optional base expression. rdar://46935325
2019-01-16 12:02:52 -08:00
Marc Rasi
bf18697b4f
parsing, typechecking, and SILGen for #assert
...
`#assert` is a new static assertion statement that will let us write
tests for the new constant evaluation infrastructure that we are working
on. `#assert` works by lowering to a `Builtin.poundAssert` SIL
instruction. The constant evaluation infrastructure will look for these
SIL instructions, const-evaluate their conditions, and emit errors if
the conditions are non-constant or false.
This commit implements parsing, typechecking and SILGen for `#assert`.
2018-11-07 16:34:17 -08:00
Mark Lacey
5e0cb1978a
Fix libSyntax support for operator decl designated types.
2018-10-11 13:36:14 -07:00
John McCall
32c7e4bbfa
Fix libSyntax support for yields with expression lists.
2018-10-09 15:34:54 -04:00
Rintaro Ishizaki
51b7168d05
[Parse] Refactor get/set accessor parsing
...
* Use 'parseAbstractFunctionBody()' for accessors as well. This
simplifies the implementation, and makes 'parseAbstractFunctionBody()'
the single point of parsing body of every 'AbstructFunctionDecl' types.
2018-08-29 18:01:21 +09:00
Alex Hoppen
53dfecd5fc
[libSyntax] Fix a crash that happened when parsing an invalid type
2018-07-18 13:10:35 -07:00
Alex Hoppen
082086c687
[libSyntax] Fix parsing of StringLiterals with invalid interpolation segments
2018-05-22 08:52:40 -07:00
Alex Hoppen
b904194998
[libSyntax] Add support for parsing #sourceLocation directives
2018-05-22 08:52:31 -07:00
Alex Hoppen
7bbb5fa87a
[libSyntax] Fix parsing of key paths on specialised generics
2018-04-27 08:10:20 -07:00
Alex Hoppen
3fd922a9d5
[libSyntax] Accept non-standard accessor kinds
2018-04-27 08:10:20 -07:00
Xi Ge
e8c80878ed
Merge pull request #16158 from nkcsgexi/synthesize-node
...
libSyntax: add a mechanism to synthesize syntax nodes in SyntaxParsingContext.
2018-04-26 11:24:50 -07:00
Xi Ge
a1a6c19959
libSyntax: add a mechanism to synthesize syntax nodes in SyntaxParsingContext.
...
To enhance the error-recovery of syntax parsing, this patch allows the
parser to synthesize missing nodes to satisfy the requirement of a
syntax node under parsing. As proof-of-concept, we synthesize r-braces
for function body to avoid regressing a function decl to an unknown
decl.
2018-04-26 10:48:57 -07:00
Alex Hoppen
94b8a3545b
[libSyntax] Fix parsing for KeyPath
2018-04-25 13:30:31 -07:00