@@ -44,70 +44,80 @@ public protocol SyntaxParseable: SyntaxProtocol {
44
44
extension DeclSyntax : SyntaxParseable {
45
45
public static func parse( from parser: inout Parser ) -> Self {
46
46
let node = parser. parseDeclaration ( )
47
- return parser. parseRemainder ( into: node) . syntax
47
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
48
+ return Syntax ( raw: raw) . cast ( Self . self)
48
49
}
49
50
}
50
51
51
52
extension ExprSyntax : SyntaxParseable {
52
53
public static func parse( from parser: inout Parser ) -> Self {
53
54
let node = parser. parseExpression ( )
54
- return parser. parseRemainder ( into: node) . syntax
55
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
56
+ return Syntax ( raw: raw) . cast ( Self . self)
55
57
}
56
58
}
57
59
58
60
extension StmtSyntax : SyntaxParseable {
59
61
public static func parse( from parser: inout Parser ) -> Self {
60
62
let node = parser. parseStatement ( )
61
- return parser. parseRemainder ( into: node) . syntax
63
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
64
+ return Syntax ( raw: raw) . cast ( Self . self)
62
65
}
63
66
}
64
67
65
68
extension TypeSyntax : SyntaxParseable {
66
69
public static func parse( from parser: inout Parser ) -> Self {
67
70
let node = parser. parseType ( )
68
- return parser. parseRemainder ( into: node) . syntax
71
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
72
+ return Syntax ( raw: raw) . cast ( Self . self)
69
73
}
70
74
}
71
75
72
76
extension PatternSyntax : SyntaxParseable {
73
77
public static func parse( from parser: inout Parser ) -> Self {
74
78
let node = parser. parsePattern ( )
75
- return parser. parseRemainder ( into: node) . syntax
79
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
80
+ return Syntax ( raw: raw) . cast ( Self . self)
76
81
}
77
82
}
78
83
79
84
extension MemberDeclBlockSyntax : SyntaxParseable {
80
85
public static func parse( from parser: inout Parser ) -> Self {
81
86
let node = parser. parseMemberDeclList ( )
82
- return parser. parseRemainder ( into: node) . syntax
87
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
88
+ return Syntax ( raw: raw) . cast ( Self . self)
83
89
}
84
90
}
85
91
86
92
extension SourceFileSyntax : SyntaxParseable {
87
93
public static func parse( from parser: inout Parser ) -> Self {
88
94
let node = parser. parseSourceFile ( )
89
- return parser. parseRemainder ( into: node) . syntax
95
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
96
+ return Syntax ( raw: raw) . cast ( Self . self)
90
97
}
91
98
}
92
99
93
100
extension SwitchCaseSyntax : SyntaxParseable {
94
101
public static func parse( from parser: inout Parser ) -> Self {
95
102
let node = parser. parseSwitchCase ( )
96
- return parser. parseRemainder ( into: node) . syntax
103
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
104
+ return Syntax ( raw: raw) . cast ( Self . self)
97
105
}
98
106
}
99
107
100
108
extension CatchClauseSyntax : SyntaxParseable {
101
109
public static func parse( from parser: inout Parser ) -> Self {
102
110
let node = parser. parseCatchClause ( )
103
- return parser. parseRemainder ( into: node) . syntax
111
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
112
+ return Syntax ( raw: raw) . cast ( Self . self)
104
113
}
105
114
}
106
115
107
116
extension GenericParameterClauseSyntax : SyntaxParseable {
108
117
public static func parse( from parser: inout Parser ) -> Self {
109
118
let node = parser. parseGenericParameters ( )
110
- return parser. parseRemainder ( into: node) . syntax
119
+ let raw = RawSyntax ( parser. parseRemainder ( into: node) )
120
+ return Syntax ( raw: raw) . cast ( Self . self)
111
121
}
112
122
}
113
123
0 commit comments