@@ -93,14 +93,16 @@ fn match_expr_placeholder(
9393 if pattern.kind != Expr_Ident {
9494 return None
9595 }
96- guard expr_ident_name(pattern) is Some (name) else { return None }
96+ guard pattern.normalized_expr_identifier_name() is Some (name) else {
97+ return None
98+ }
9799 if is_ignore_placeholder(name) {
98100 Some (true )
99101 } else if is_special_expr_metavar(compiled, name) ||
100102 contains_name(compiled.expr_metavars, name) {
101103 Some (bind_value(bindings, name, candidate))
102104 } else if contains_name(compiled.identifier_metavars, name) {
103- match normalize_expr( candidate) {
105+ match candidate.normalized_expr_identifier_name( ) {
104106 Some (candidate_name) =>
105107 Some (
106108 bind_value(bindings, name, string_binding(candidate_name, candidate)),
@@ -127,13 +129,15 @@ fn match_pattern_placeholder(
127129 if pattern.kind != Pattern_Var {
128130 return None
129131 }
130- guard pattern_var_name(pattern) is Some (name) else { return None }
132+ guard pattern.normalized_pattern_identifier_name() is Some (name) else {
133+ return None
134+ }
131135 if parse_pattern_metavar_name(name) is Some (meta_name) {
132136 Some (bind_value(bindings, meta_name, candidate))
133137 } else if is_ignore_placeholder(name) {
134138 Some (true )
135139 } else if contains_name(compiled.identifier_metavars, name) {
136- match normalize_pattern( candidate) {
140+ match candidate.normalized_pattern_identifier_name( ) {
137141 Some (candidate_name) =>
138142 Some (
139143 bind_value(bindings, name, string_binding(candidate_name, candidate)),
@@ -239,7 +243,7 @@ fn match_long_ident(
239243 guard leaf_string_child(pattern, "value") is Some (pattern_name) else {
240244 return false
241245 }
242- guard normalized_long_ident(candidate ) is Some (candidate_name) else {
246+ guard candidate. normalized_long_ident() is Some (candidate_name) else {
243247 return false
244248 }
245249 match_identifier_name(
@@ -262,7 +266,7 @@ fn match_long_ident(
262266 guard leaf_string_child(candidate, "id") is Some (candidate_id) else {
263267 return false
264268 }
265- guard normalized_long_ident(candidate ) is Some (bound_candidate) else {
269+ guard candidate. normalized_long_ident() is Some (bound_candidate) else {
266270 return false
267271 }
268272 pattern_pkg == candidate_pkg &&
@@ -284,7 +288,7 @@ fn match_binder(
284288 if candidate.kind != Binder {
285289 return false
286290 }
287- match (binder_name( pattern), binder_name( candidate)) {
291+ match (pattern.normalized_binder_name( ), candidate.normalized_binder_name( )) {
288292 (Some (pattern_name), Some (candidate_name)) =>
289293 match_identifier_name(
290294 pattern_name, candidate_name, candidate_name, candidate, compiled, bindings,
@@ -303,7 +307,7 @@ fn match_label(
303307 if candidate.kind != Label {
304308 return false
305309 }
306- match (label_name( pattern), label_name( candidate)) {
310+ match (pattern.normalized_label_name( ), candidate.normalized_label_name( )) {
307311 (Some (pattern_name), Some (candidate_name)) =>
308312 match_identifier_name(
309313 pattern_name, candidate_name, candidate_name, candidate, compiled, bindings,
@@ -525,25 +529,6 @@ fn leaf_bool_child(node : @untyped_ast.Node, name : String) -> Bool? {
525529 }
526530}
527531
528- ///|
529- fn first_child(node : @untyped_ast.Node ) -> @untyped_ast.Node? {
530- if node.children.length() == 0 {
531- None
532- } else {
533- let (_, value) = node.children[0]
534- Some (value)
535- }
536- }
537-
538- ///|
539- fn expr_ident_name(node : @untyped_ast.Node ) -> String? {
540- if child(node, "id") is Some (var_node) {
541- normalize_var(var_node)
542- } else {
543- None
544- }
545- }
546-
547532///|
548533fn expr_constant(node : @untyped_ast.Node ) -> @untyped_ast.Node? {
549534 if node.kind == Expr_Constant {
@@ -562,77 +547,6 @@ fn pattern_constant(node : @untyped_ast.Node) -> @untyped_ast.Node? {
562547 }
563548}
564549
565- ///|
566- fn pattern_var_name(node : @untyped_ast.Node ) -> String? {
567- if first_child(node) is Some (binder) {
568- binder_name(binder)
569- } else {
570- None
571- }
572- }
573-
574- ///|
575- fn normalize_expr(node : @untyped_ast.Node ) -> String? {
576- if node.kind == Expr_Ident {
577- expr_ident_name(node)
578- } else {
579- None
580- }
581- }
582-
583- ///|
584- fn normalize_pattern(node : @untyped_ast.Node ) -> String? {
585- if node.kind == Pattern_Var {
586- pattern_var_name(node)
587- } else {
588- None
589- }
590- }
591-
592- ///|
593- fn normalize_var(node : @untyped_ast.Node ) -> String? {
594- if node.kind == Var {
595- if child(node, "name") is Some (name) {
596- normalized_long_ident(name)
597- } else {
598- None
599- }
600- } else {
601- None
602- }
603- }
604-
605- ///|
606- fn normalized_long_ident(node : @untyped_ast.Node ) -> String? {
607- match node.kind {
608- LongIdent_Ident => leaf_string_child(node, "value")
609- LongIdent_Dot =>
610- match (leaf_string_child(node, "pkg"), leaf_string_child(node, "id")) {
611- (Some (pkg), Some (id)) => Some ("@\{pkg}.\{id}")
612- _ => None
613- }
614- _ => None
615- }
616- }
617-
618- ///|
619- fn binder_name(node : @untyped_ast.Node ) -> String? {
620- if node.kind == Binder {
621- leaf_string_child(node, "name")
622- } else {
623- None
624- }
625- }
626-
627- ///|
628- fn label_name(node : @untyped_ast.Node ) -> String? {
629- if node.kind == Label {
630- leaf_string_child(node, "name")
631- } else {
632- None
633- }
634- }
635-
636550///|
637551fn constructor_name(node : @untyped_ast.Node ) -> String? {
638552 guard child(node, "name") is Some (name_node) else { return None }
@@ -677,7 +591,7 @@ fn normalized_constructor(constr : @untyped_ast.Node) -> String {
677591///|
678592fn normalized_type_name(type_name : @untyped_ast.Node ) -> String {
679593 let name = if child(type_name, "name") is Some (long_ident) {
680- normalized_long_ident(long_ident ).unwrap_or("")
594+ long_ident. normalized_long_ident().unwrap_or("")
681595 } else {
682596 ""
683597 }
0 commit comments