@@ -134,8 +134,8 @@ extension HTMLKitUtilities {
134134 }
135135 return . interpolation( to_single_line ( function) )
136136 }
137- if let member : MemberAccessExprSyntax = expression. memberAccess {
138- return . interpolation( to_single_line ( member ) )
137+ if expression . memberAccess != nil || expression. is ( ForceUnwrapExprSyntax . self ) {
138+ return . interpolation( to_single_line ( expression ) )
139139 }
140140 if let array: ArrayExprSyntax = expression. array {
141141 let separator : String
@@ -171,125 +171,17 @@ extension HTMLKitUtilities {
171171 }
172172 return . array( results)
173173 }
174- if let decl: DeclReferenceExprSyntax = expression. as ( DeclReferenceExprSyntax . self ) {
174+ if let decl: DeclReferenceExprSyntax = expression. declRef {
175175 var string : String = decl. baseName. text, remaining_interpolation : Int = 1
176176 warn_interpolation ( context: context, node: expression, string: & string, remaining_interpolation: & remaining_interpolation, lookupFiles: lookupFiles)
177177 if remaining_interpolation > 0 {
178- return . interpolation( " \\ ( " + string + " ) " )
178+ return . interpolation( string)
179179 } else {
180180 return . string( string)
181181 }
182182 }
183- if let unwrap: ForceUnwrapExprSyntax = expression. as ( ForceUnwrapExprSyntax . self) {
184- let merged : String = to_single_line ( unwrap)
185- return . interpolation( " \\ ( " + merged + " ) " )
186- }
187183 return nil
188184 }
189-
190- // MARK: To Single Line
191- static func to_single_line( _ expression: ExprSyntax ) -> String {
192- if let function: FunctionCallExprSyntax = expression. functionCall {
193- return to_single_line ( function)
194- } else if let member: MemberAccessExprSyntax = expression. memberAccess {
195- return to_single_line ( member)
196- } else if let force_unwrap: ForceUnwrapExprSyntax = expression. as ( ForceUnwrapExprSyntax . self) {
197- return to_single_line ( force_unwrap) + " ! "
198- } else if let closure: ClosureExprSyntax = expression. as ( ClosureExprSyntax . self) {
199- return to_single_line ( closure)
200- } else {
201- return " \( expression) "
202- }
203- }
204- static func to_single_line( _ force_unwrap: ForceUnwrapExprSyntax ) -> String {
205- return to_single_line ( force_unwrap. expression) + " ! "
206- }
207- static func to_single_line( _ member: MemberAccessExprSyntax ) -> String {
208- var string : String = " \( member) "
209- string. removeAll { $0. isWhitespace }
210- return string
211- }
212- static func to_single_line( _ function: FunctionCallExprSyntax ) -> String {
213- var string : String = " \( function. calledExpression) "
214- string. removeAll { $0. isWhitespace }
215- var args : String = " "
216- var is_first : Bool = true
217- for argument in function. arguments {
218- var arg : String
219- if let label = argument. label {
220- arg = " \( label) "
221- while arg. first? . isWhitespace ?? false {
222- arg. removeFirst ( )
223- }
224- if !is_first {
225- arg. insert ( " , " , at: arg. startIndex)
226- }
227- arg += " : "
228- var expr : String = to_single_line ( argument. expression)
229- while expr. first? . isWhitespace ?? false {
230- expr. removeFirst ( )
231- }
232- arg += expr
233- } else {
234- arg = " \( argument) "
235- while arg. first? . isWhitespace ?? false {
236- arg. removeFirst ( )
237- }
238- }
239- args += arg
240- is_first = false
241- }
242- if let closure: ClosureExprSyntax = function. trailingClosure {
243- args += to_single_line ( closure)
244- }
245- args = " ( " + args + " ) "
246- return string + args
247- }
248- static func to_single_line( _ decl: DeclSyntax ) -> String {
249- return " \( decl) " // TODO: fix?
250- }
251- static func to_single_line( _ statement: StmtSyntax ) -> String {
252- return " \( statement) " // TODO: fix?
253- }
254- static func to_single_line( _ closure: ClosureExprSyntax ) -> String {
255- var signature : String = " " , body : String = " "
256- if let sig: ClosureSignatureSyntax = closure. signature {
257- signature = to_single_line ( sig)
258- }
259- var is_first : Bool = true
260- for statement in closure. statements {
261- if !is_first {
262- body += " ; "
263- }
264- switch statement. item {
265- case . decl( let decl) : body += to_single_line ( decl)
266- case . expr( let expression) : body += to_single_line ( expression)
267- case . stmt( let stmt) : body += to_single_line ( stmt)
268- }
269- is_first = false
270- }
271- return " { " + signature + body + " } "
272- }
273- static func to_single_line( _ signature: ClosureSignatureSyntax ) -> String {
274- var string : String = " "
275- switch signature. parameterClause {
276- case nil :
277- break
278- case . simpleInput( let list) :
279- for i in list {
280- string += i. name. text
281- }
282- break
283- case . parameterClause( let clause) :
284- string += " ( "
285- for i in clause. parameters {
286- string += " \( i) "
287- }
288- string += " ) "
289- break
290- }
291- return string + " in "
292- }
293185}
294186
295187// MARK: LiteralReturnType
0 commit comments