Use constructor names for unqualified imported values (#120)

pull/844/head
Gears 2025-05-17 13:50:31 +07:00 committed by GitHub
parent 5efbe4fdf1
commit bf545869aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 29 additions and 7 deletions

@ -93,9 +93,13 @@ module.exports = grammar({
optional(seq("as", field("alias", $.identifier))) optional(seq("as", field("alias", $.identifier)))
), ),
seq( seq(
optional("type"), "type",
field("name", $.type_identifier), field("name", $.type_identifier),
optional(seq("as", field("alias", $.type_identifier))) optional(seq("as", field("alias", $.type_identifier)))
),
seq(
field("name", $.constructor_name),
optional(seq("as", field("alias", $.constructor_name)))
) )
), ),

@ -21,6 +21,7 @@ import a.{b}
import a/b.{c, d} import a/b.{c, d}
import a/b.{c as d, e} import a/b.{c as d, e}
import a/b.{c, D as E} import a/b.{c, D as E}
import a/b.{A as B, type C as D}
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -50,6 +51,15 @@ import a/b.{c, D as E}
imports: (unqualified_imports imports: (unqualified_imports
(unqualified_import (unqualified_import
name: (identifier)) name: (identifier))
(unqualified_import
name: (constructor_name)
alias: (constructor_name))))
(import
module: (module)
imports: (unqualified_imports
(unqualified_import
name: (constructor_name)
alias: (constructor_name))
(unqualified_import (unqualified_import
name: (type_identifier) name: (type_identifier)
alias: (type_identifier))))) alias: (type_identifier)))))
@ -61,6 +71,7 @@ Aliased imports
import a/b.{c as d} as e import a/b.{c as d} as e
import animal/cat as kitty import animal/cat as kitty
import animal.{Cat as Kitty} as a import animal.{Cat as Kitty} as a
import animal.{type Cat as Kitty} as a
import animal.{} import animal.{}
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -76,6 +87,13 @@ import animal.{}
(import (import
module: (module) module: (module)
alias: (identifier)) alias: (identifier))
(import
module: (module)
imports: (unqualified_imports
(unqualified_import
name: (constructor_name)
alias: (constructor_name)))
alias: (identifier))
(import (import
module: (module) module: (module)
imports: (unqualified_imports imports: (unqualified_imports

@ -161,7 +161,7 @@ pub fn negate(bool: Bool) -> Bool {
module: (module) module: (module)
imports: (unqualified_imports imports: (unqualified_imports
(unqualified_import (unqualified_import
name: (type_identifier)))) name: (constructor_name))))
(statement_comment) (statement_comment)
(statement_comment) (statement_comment)
(statement_comment) (statement_comment)
@ -234,7 +234,7 @@ fn foo(a,) {
(module) (module)
(unqualified_imports (unqualified_imports
(unqualified_import (unqualified_import
(type_identifier)))) (constructor_name))))
(constant (constant
(identifier) (identifier)
(tuple_type (tuple_type

@ -1,8 +1,8 @@
import gleam/option.{Option, Some, None} import gleam/option.{type Option, Some, None}
// ^ reference.module // ^ reference.module
// ^ reference.type // ^ reference.type
// ^ reference.type // ^ reference.constructor
// ^ reference.type // ^ reference.constructor
import gleam/bit_builder import gleam/bit_builder
// ^ reference.module // ^ reference.module