Commit Graph

155 Commits

Author SHA1 Message Date
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