Skip to content

ClangImporter is unable to handle shadowed aliasing #82121

Open
@compnerd

Description

@compnerd

Description

With retroactive versioning and deployment targets, it is possible to use a pattern of:

extern int kVersion;
extern int kVersion1; // equivalent to `kVersion`
extern int kVersion2;
#if DEPLOYMENT_TARGET_IS_NEW
#define kVersion kVersion2
#else
#define kVersion kVersion1
#endif

This allows a source compatible upgrade based upon the deployment target and uses shadowing of kVersion.

Reproduction

lit ClangImporter.versioning

Expected behavior

It should be possible to either qualify and select or allow shadowing.

Environment

Swift version 6.2-dev (LLVM b28ed49a05cd0fb, Swift eb47489e6606d96)
Target: x86_64-unknown-windows-msvc
Build config: +assertions

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.c/c++ macrosclang importerArea → compiler: The clang importer

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions