Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emit a diagnostic note at the class declaration when the method definition does not match any declaration. #110558

Open
hokein opened this issue Sep 30, 2024 · 4 comments
Labels
clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer clang:frontend Language frontend issues, e.g. anything involving "Sema" good first issue https://github.com/llvm/llvm-project/contribute

Comments

@hokein
Copy link
Collaborator

hokein commented Sep 30, 2024

Considering the follow case:

template <class T>
class FooBar {
  double Foo();
};

template <class T>
double FooBar<T>::Bar() { return 0.0; }

Currently, Clang only emits the error out-of-line definition of 'Bar' does not match any declaration at the Bar definition. It would be helpful to also emit a note pointing to the FooBar class declaration (GCC already does this).

See https://godbolt.org/z/GG8zvvzaP

@hokein hokein added good first issue https://github.com/llvm/llvm-project/contribute clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer labels Sep 30, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Sep 30, 2024

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. Check that no other contributor has already been assigned to this issue. If you believe that no one is actually working on it despite an assignment, ping the person. After one week without a response, the assignee may be changed.
  2. In the comments of this issue, request for it to be assigned to you, or just create a pull request after following the steps below. Mention this issue in the description of the pull request.
  3. Fix the issue locally.
  4. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  5. Create a Git commit.
  6. Run git clang-format HEAD~1 to format your changes.
  7. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation. Mention this issue in the description of the pull request.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 30, 2024

@llvm/issue-subscribers-good-first-issue

Author: Haojian Wu (hokein)

Considering the follow case:
template &lt;class T&gt;
class FooBar {
  double Foo();
};

template &lt;class T&gt;
double FooBar&lt;T&gt;::Bar() { return 0.0; }

Currently, Clang only emits the error out-of-line definition of 'Bar' does not match any declaration at the Bar definition. It would be helpful to also emit a note pointing to the FooBar class declaration (GCC already does this).

See https://godbolt.org/z/GG8zvvzaP

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 30, 2024

@llvm/issue-subscribers-clang-frontend

Author: Haojian Wu (hokein)

Considering the follow case:
template &lt;class T&gt;
class FooBar {
  double Foo();
};

template &lt;class T&gt;
double FooBar&lt;T&gt;::Bar() { return 0.0; }

Currently, Clang only emits the error out-of-line definition of 'Bar' does not match any declaration at the Bar definition. It would be helpful to also emit a note pointing to the FooBar class declaration (GCC already does this).

See https://godbolt.org/z/GG8zvvzaP

@shafik
Copy link
Collaborator

shafik commented Sep 30, 2024

@hokein since you labelled this a good first issue, it may be helpful to point out the diagnostic id and where the diagnostic is being emitted to help someone new get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer clang:frontend Language frontend issues, e.g. anything involving "Sema" good first issue https://github.com/llvm/llvm-project/contribute
Projects
None yet
Development

No branches or pull requests

3 participants