dotnet/roslyn

Compiler missing namespace symbols seem to not implment IsGlobalNamespace properly.

Ouverte

#44 767 ouverte le 1 juin 2020

 (0 commentaire) (0 réaction) (0 personne assignée)C# (4 257 forks)batch import
Area-CompilersBughelp wanted

Métriques du dépôt

Stars
 (20 414 étoiles)
Métriques de merge PR
 (Merge moyen 6j 17h) (256 PRs mergées en 30 j)

Description

Found in https://github.com/dotnet/roslyn/pull/44713

Say you have a project with no references (not even corlib or anything like that):

class C  { public int i; }

the i field will have an ErrorTypeSymbol for it's return type with name "Int32" contained in a missing namespace "" . "System". i.e. it is parented by two namespaces (expected), the empty named one, and the System named one. The empty named namespace is not marked as a global namespace though. i.e. IsGlobalNamespace returns false. Indeed, the empty named namespace is itself then parented by an actual empty-named-global-namespace.

This feel very unintentional and odd. IDE worked around this simply by checking if we have an error type and special casing our processing of this namespace chain. So this is nbd, but potentially something that someone coudl fix (including community) in the future if they were so inclined.

Guide contributeur