Alex Hoppen
57196f8902
[libSyntax] Enable serialization of syntax trees for incremental transfer
2018-07-23 12:32:49 -07:00
Alex Hoppen
6568feb921
Merge pull request #18022 from ahoppen/invalid-type-fix
...
[libSyntax] Fix a crash that happened when parsing an invalid type
2018-07-18 17:18:20 -07: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
9d59cd286b
[incrParse] Add a stable id to the syntax nodes
...
The id is meant to be stable across incremental parses
2018-07-13 16:56:03 -07:00
Alex Hoppen
bc528237e5
[libSyntax] Adjust tests for improved syntax parsing behaviour
2018-05-22 09:07:56 -07:00
Alex Hoppen
b2ebc96510
[incrParse] Reparse a node if the next leaf node has been modified
2018-05-22 09:07:55 -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
Rintaro Ishizaki
9b182d108f
[Syntax] Verify syntax tree only if we reached the real EOF
...
We used to verify the tree for every parseIntoSourceFile() invocation.
2018-05-08 16:38:11 +09:00
Rintaro Ishizaki
0480cc74aa
[Syntax] Add test case for '-verify-syntax-tree'
2018-05-08 16:34:49 +09: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
Alex Hoppen
00604fb3dc
[libSyntax] Add -verify-syntax-tree frontend flag
...
This will parse the source file into a libSyntax tree and verify that no
unknown nodes exist within it
2018-04-27 07:51:08 -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
387ef8f002
Merge pull request #16155 from ahoppen/if-semi-keypath
...
[libSyntax] Parsing fixes for #if, trailing semicolon, key paths
2018-04-25 14:50:24 -07:00
Alex Hoppen
94b8a3545b
[libSyntax] Fix parsing for KeyPath
2018-04-25 13:30:31 -07:00
Alex Hoppen
a5314afe5f
Merge pull request #16117 from ahoppen/attributes
...
[libSyntax] Make parsing of attributes more structured
2018-04-25 09:21:43 -07:00
Alex Hoppen
28973f23b6
[libSyntax] Fix parsing of member declarations with trailing semicolon
2018-04-24 14:19:24 -07:00
Alex Hoppen
3e9ae802c2
[libSyntax] Make parsing of attribute arguments more structured
...
This also fixes several issues where attribute arguments could not be
parsed as a TokenList since some of its arguments already had structure
and were not tokens
2018-04-24 13:18:15 -07:00
Rintaro Ishizaki
06c528d9a4
Merge pull request #16090 from hashemi/non-breaking-spaces
...
[Parser] Detect non-breaking space (U+00A0) and offer a fix-it
2018-04-24 10:32:03 +09:00
Alex Hoppen
c52f4a8131
[libSyntax] Fix parsing of operators passed to higher order functions
2018-04-23 12:23:27 -07:00
Alex Hoppen
75406c895c
[libSyntax] Enable parsing of class restrictions for protocols
2018-04-23 12:23:27 -07:00
Ahmad Alhashemi
9d28cd5262
Add more non-breaking space test cases
2018-04-22 16:14:10 -04:00
Ahmad Alhashemi
1603ec2bee
[Parser] Detect nonbreaking space U+00A0 and fixit
2018-04-22 15:54:07 -04:00
Rintaro Ishizaki
338cedd6d5
[Syntax] Parse '#selector' expression syntax
2018-04-12 13:56:04 +09:00
Rintaro Ishizaki
eb69497d64
[Syntax] Parse 'operator' declaration syntax
2018-04-12 13:55:55 +09:00
Rintaro Ishizaki
15a04fc45c
Merge pull request #15873 from rintaro/syntax-precedencegroup
...
[Syntax] Parse 'precedencegroup' declaration syntax
2018-04-12 10:15:27 +09:00
Rintaro Ishizaki
07fd8b8a4b
[Parse] Handle edge case of '@unknown' for switch case
...
* Previously, hit assertion if '@unknown' has argument clause
* Diagnose multiple '@unknown' for single 'case'
2018-04-12 01:27:40 +09:00
Rintaro Ishizaki
b457500389
[Syntax] Parse 'precedencegroup' declaration syntax
2018-04-11 23:21:54 +09:00
Jordan Rose
701975ad1d
Add parsing support for @unknown (SE-0192)
...
This is our first statement attribute, made more complicated by the
fact that a 'case'/'default' isn't really a normal statement. I've
chosen /not/ to implement a general statement attribute logic like we
have for types and decls at this time, but I did get the compiler
parsing arbitrary attributes before 'case' and 'default'. As a bonus,
we now treat all cases within functions as being switch-like rather
than enum-like, which is better for recovery when not in a switch.
2018-04-05 16:35:14 -07:00
Rintaro Ishizaki
66d400eb1b
[Syntax] Parse 'enum' and 'case' declaration ( #15704 )
2018-04-04 08:38:08 +09:00
Rintaro Ishizaki
18b28b9184
[Parse] Factor out declaration modifier list parsing ( #15702 )
2018-04-03 19:58:57 +09:00
Rintaro Ishizaki
fc3cbcda88
[Syntax] Redesign IfConfigDecl syntax
2018-04-03 01:31:33 +09:00
Rintaro Ishizaki
4488e99a04
[Syntax] Parse 'switch' statement
2018-03-28 00:30:21 +09:00
Xi Ge
6a99b01961
[test] Avoid creating new tmp directory for syntax round-trip testing. rdar://38567449 ( #15320 )
2018-03-17 12:08:55 -07:00
Slava Pestov
93cf3a4bb8
Disable test that's failing in PR testing
2018-03-16 18:26:45 -07:00
Xi Ge
4c3d3b4294
[test] libSyntax: make sure we can handle emoji. ( #15297 )
2018-03-16 15:24:59 -07:00
Dexin Li
e0f8b27117
[Syntax]Add a deserializer that convert json to libSyntax tree ( #15203 )
2018-03-16 15:22:04 -07:00
Xi Ge
a121ce65ca
Syntax: add APIs to help syntax tree serialization. NFC ( #15241 )
2018-03-14 13:12:31 -07:00
Harlan
aa1059c9a3
[Syntax] Parse WhileStmtSyntax nodes ( #15186 )
2018-03-12 17:50:07 -04:00
Xi Ge
94c3f55117
libSyntax: extract meta-information of trivia kinds to syntax_gyb_support. NFC
...
The existing libSyntax infrastructure uses external python
dictionaries to share logic between C++ and Swift implementations.
This patch teaches trivia kinds to adapt to this infrastructure
as well.
2018-03-06 17:45:43 -08:00
omochimetaru
22cddbf033
[Syntax] Parse invalid chars as trivia
2018-03-06 08:25:09 -08:00
omochimetaru
190af6c063
[Syntax] support nul character as garbage trivia
2018-03-05 16:53:24 +09:00
omochimetaru
d12542503f
[Syntax] test diagnostics in Lexer with libSyntax ( #14954 )
2018-03-04 08:53:54 +09:00
Rintaro Ishizaki
6c0af2a24f
[Syntax] Introduce CodeBlockItem ( #14458 )
...
CodeBlockItem represents Decl, Stmt or Expr that optionally followed by
semi-colon.
SourceFile syntax holds a list of CodeBlockItem.
2018-02-08 10:31:01 +09:00
Rintaro Ishizaki
1eedcb7682
[Syntax] Parse '->' in sequence expression
2018-02-06 15:06:00 +09:00
Rintaro Ishizaki
e6307708d1
[Syntax] Parse 'type(of: <expr>)' syntax
...
In libSyntax, this is just a FunctionCallExpr.
2018-02-06 15:06:00 +09:00
Rintaro Ishizaki
5dc6b78457
[Syntax] Parse generic specialize expression
2018-02-06 15:05:59 +09:00
Rintaro Ishizaki
6ad01da279
[Syntax] Support parsing empty array expression.
2018-02-06 13:03:41 +09:00