You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I found a bunch of edge cases in Bindgen::Graph::Path while trying to figure out some namespace-related issues:
describe Bindgen::Graph::Pathdo
describe "#lookup"do
context "given a global path"do
it "starts lookup from the root"do
path("::Root::Right::D").lookup(a).should be(d)
path("::Root::Root::Right::D").lookup(a).should_not be(d) # failsendendendend
Global path lookup is wrong if the root name is repeated twice.
# E# /# f1 --> F# / \# f2 --> F G# / \# H J
e =Bindgen::Graph::Namespace.new("E")
f1 =Bindgen::Graph::Namespace.new("F", e)
f2 =Bindgen::Graph::Namespace.new("F", f1)
g =Bindgen::Graph::Namespace.new("G", f1)
h =Bindgen::Graph::Namespace.new("H", f2)
j =Bindgen::Graph::Namespace.new("J", h)
# these all fail
path("F::G").lookup(f1).should be_nil
path("F::G").lookup(f2).should be_nil
path("F::G").lookup(g).should be_nil
path("F::G").lookup(h).should be_nil
path("F::G").lookup(j).should be_nil
Local path lookup doesn't handle shadowed namespaces properly. (Both Crystal and C++ do this.)
Bindgen::Graph::Path.from("::").last_part # ""
This is really confusing; no places outside Path use the empty string to refer to a top-level / root namespace.
I'll soon submit a refactor that fixes these edge cases.
The text was updated successfully, but these errors were encountered:
I found a bunch of edge cases in
Bindgen::Graph::Path
while trying to figure out some namespace-related issues:Global path lookup is wrong if the root name is repeated twice.
Local path lookup doesn't handle shadowed namespaces properly. (Both Crystal and C++ do this.)
This is really confusing; no places outside
Path
use the empty string to refer to a top-level / root namespace.I'll soon submit a refactor that fixes these edge cases.
The text was updated successfully, but these errors were encountered: