Skip to content

Commit 6490cce

Browse files
committed
unified: Use the coercion macro for literals
1 parent 3b56e52 commit 6490cce

1 file changed

Lines changed: 12 additions & 24 deletions

File tree

  • unified/extractor/src/languages/swift

unified/extractor/src/languages/swift/swift.rs

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -206,27 +206,17 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
206206
// swift-syntax does not distinguish the lexical integer/string forms
207207
// (hex/binary/octal, single- vs multi-line, raw): each is a single
208208
// `*LiteralExpr` kind, so one rule per literal type suffices.
209-
rule!((integerLiteralExpr) @@node => expr {
210-
let value = tree!((int_literal #{node}));
211-
wrap_pattern_expr(&mut ctx, value)
212-
}),
213-
rule!((floatLiteralExpr) @@node => expr {
214-
let value = tree!((float_literal #{node}));
215-
wrap_pattern_expr(&mut ctx, value)
216-
}),
217-
rule!((booleanLiteralExpr) @@node => expr {
218-
let value = tree!((boolean_literal #{node}));
219-
wrap_pattern_expr(&mut ctx, value)
220-
}),
221-
rule!((nilLiteralExpr) @@node => expr {
222-
let value = tree!((builtin_expr #{node}));
223-
wrap_pattern_expr(&mut ctx, value)
224-
}),
209+
coerce_to_pattern!(integerLiteralExpr),
210+
rule!((integerLiteralExpr) @@node => (int_literal #{node})),
211+
coerce_to_pattern!(floatLiteralExpr),
212+
rule!((floatLiteralExpr) @@node => (float_literal #{node})),
213+
coerce_to_pattern!(booleanLiteralExpr),
214+
rule!((booleanLiteralExpr) @@node => (boolean_literal #{node})),
215+
coerce_to_pattern!(nilLiteralExpr),
216+
rule!((nilLiteralExpr) @@node => (builtin_expr #{node})),
225217
// Plain string literals (no interpolation)
226-
rule!((simpleStringLiteralExpr) @@node => expr {
227-
let value = tree!((string_literal #{node}));
228-
wrap_pattern_expr(&mut ctx, value)
229-
}),
218+
coerce_to_pattern!(simpleStringLiteralExpr),
219+
rule!((simpleStringLiteralExpr) @@node => (string_literal #{node})),
230220
// String literals with interpolation
231221
coerce_to_pattern!(stringLiteralExpr),
232222
rule!(
@@ -243,10 +233,8 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
243233
=>
244234
(call_expr callee: (builtin_expr "interpolation") argument: {exprs})
245235
),
246-
rule!((regexLiteralExpr) @@node => expr {
247-
let value = tree!((regex_literal #{node}));
248-
wrap_pattern_expr(&mut ctx, value)
249-
}),
236+
coerce_to_pattern!(regexLiteralExpr),
237+
rule!((regexLiteralExpr) @@node => (regex_literal #{node})),
250238
// ---- Names ----
251239
// A function reference spelled with argument labels (`f(x:y:z:)`) is a
252240
// `declReferenceExpr` carrying `argumentNames`. Mark it unsupported for

0 commit comments

Comments
 (0)