From 1eea8cc9c6d319c876f7335720fe5d99e519ed10 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 1 Dec 2021 22:17:55 +0100 Subject: [PATCH] use name in source module when importing an aliased binding This solves the following problem: ```julia julia> module A import Base.identity as id end Main.A julia> import .A.id julia> id ERROR: UndefVarError: id not defined ``` --- src/module.c | 2 +- test/syntax.jl | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/module.c b/src/module.c index 8f37cc00b1bd6..63dff3ae6deb7 100644 --- a/src/module.c +++ b/src/module.c @@ -528,7 +528,7 @@ static void module_import_(jl_module_t *to, jl_module_t *from, jl_sym_t *s, jl_s } } else { - jl_binding_t *nb = new_binding(s); + jl_binding_t *nb = new_binding(b->name); nb->owner = b->owner; nb->imported = (explici!=0); nb->deprecated = b->deprecated; diff --git a/test/syntax.jl b/test/syntax.jl index 69d3e8c7fe591..516a96850ef96 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -2503,6 +2503,7 @@ end end module Mod2 +import ..Mod.x as x_from_mod const y = 2 end @@ -2543,6 +2544,11 @@ import .Mod.@mac as @m @test_throws ErrorException eval(:(import .Mod.func as @notmacro)) @test_throws ErrorException eval(:(using .Mod: @mac as notmacro)) @test_throws ErrorException eval(:(using .Mod: func as @notmacro)) + +import .Mod2.x_from_mod + +@test @isdefined(x_from_mod) +@test x_from_mod == Mod.x end import .TestImportAs.Mod2 as M2