Skip to content

[Clang] Clang incorrectly accepts invalid lambda in default argument that references function parameter #152467

@Xniao

Description

@Xniao

Generated by Fuzzer.

Clang accepts following invalid code which is rejected by GCC and MSVC.
It correctly rejects invalid lambda usage in function bodies (e.g., int i = [] { return i; }();), but incorrectly accepts the identical invalid pattern when used in default arguments.
Reproducer: https://godbolt.org/z/M3xeM5Mcn

Program

int g(int i = [] {
  return i;
}()) {
  return i;
}

int main() {
  return g();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepts-invalidclang:frontendLanguage frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partydiverges-from:edgDoes the clang frontend diverge from edg compiler on this issuediverges-from:gccDoes the clang frontend diverge from gcc on this issuediverges-from:msvcDoes the clang frontend diverge from msvc on this issuegenerated by fuzzerlambdaC++11 lambda expressionsregression:19Regression in 19 release

    Type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions