WerWolv / WerWolv/PatternLanguage
Inconsistent requirement for scope resolution qualification of functions vs custom types
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 275
- Forks
- 75
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 10
Description
A user-defined type declared inside a namespace can be used inside the namespace without full qualification (aka explicit full scope resolution in name) but functions seem to require the use of their full names regardless of location of usage.
Consider the following declarations:
namespace ns {
struct S {
u8 c = 3;
};
fn fun(auto arg) {
return arg+1;
};
}
Using them the following code runs correctly:
import std.io as io;
namespace ns {
S s;
io::print("{}",ns::fun(s.c));
}
but dropping the full name from fun causes an error indicating that the function could not be found as shown in the next image. Either both S and fun should need their full name or neither should.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the namespace example from the issue, comparing the qualified and unqualified uses of S and fun. Start by tracing the implementation of namespace name resolution for user-defined types and functions. Done means the behavior is consistent for both declarations and the provided example no longer reports that the function cannot be found.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100