WerWolv / WerWolv/PatternLanguage

Inconsistent requirement for scope resolution qualification of functions vs custom types

Open
#85 0 comments 0 reactions 0 assignees View on GitHub

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.

image

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.