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

Improve detection of IStructId namespace from compilation #52

Merged
merged 1 commit into from
Dec 22, 2024
Merged

Conversation

kzu
Copy link
Member

@kzu kzu commented Dec 22, 2024

The existing approach of using analyzer config options breaks if there are transitive project references involved, since the options will contain potentially the wrong namespace (the one for the project being built rather than the one where IStructId actually exists).

This changes the approach to looking up the types by their metadata name plus a codegen attribute which we assume users won't be using for their own code (even if they do happen to use IStructId for some other purpose).

@kzu kzu added the enhancement New feature or request label Dec 22, 2024
The existing approach of using analyzer config options breaks if there are transitive project references involved, since the options will contain potentially the wrong namespace (the one for the project being built rather than the one where IStructId actually exists).

This changes the approach to looking up the types by their metadata name plus a codegen attribute which we assume users won't be using for their own code (even if they do happen to use `IStructId` for some other purpose).
@devlooped-bot
Copy link
Member

devlooped-bot commented Dec 22, 2024

61 passed 61 passed
61 passed 61 passed

🧪 Details on Ubuntu 22.04.5 LTS

✅ StructId.CodeTemplateTests.AddsStructIdNamespace
✅ StructId.CodeTemplateTests.AppliesValueTemplate
✅ StructId.CodeTemplateTests.PreservesPrimaryConstructor
✅ StructId.CodeTemplateTests.PreservesTrivia
✅ StructId.CodeTemplateTests.RemovesFileLocalTypes
✅ StructId.ConstructorGeneratorTests.GenerateRecordConstructor
✅ StructId.ConstructorGeneratorTests.GenerateRecordConstructorInGlobalNamespace
✅ StructId.ConstructorGeneratorTests.GenerateRecordStringConstructor
✅ StructId.DapperGeneratorTests.GenerateCustomHandler
✅ StructId.DapperGeneratorTests.GenerateHandler
✅ StructId.DapperGeneratorTests.GenerateTempletizedHandler
✅ StructId.DapperGeneratorTests.SkipsUnsupported
✅ StructId.Functional.FunctionalTests.CustomTemplate
✅ StructId.Functional.FunctionalTests.EntityFramework
✅ StructId.Functional.FunctionalTests.EqualityTest
✅ StructId.Functional.FunctionalTests.GuidImplementUtf8SpanFormattable
✅ StructId.Functional.FunctionalTests.ImplementsFormattable
✅ StructId.Functional.FunctionalTests.ImplicitAndExplicitCast
✅ StructId.Functional.FunctionalTests.Newtonsoft
✅ StructId.Functional.FunctionalTests.SpanFormattableIdsImplementISpanFormattable
✅ StructId.Functional.FunctionalTests.StringIdDoesNotImplementISpanFormattable
✅ StructId.Functional.UlidTests.Dapper
✅ StructId.Functional.UlidTests.DapperUlid
✅ StructId.Functional.UlidTests.EntityFramework
✅ StructId.NewtonsoftJsonGeneratorTests.DoesNotGenerateIfNewtonsoftJsonNotPresent
✅ StructId.NewtonsoftJsonGeneratorTests.GenerateIfNewtonsoftJsonPresent
✅ StructId.RecordAnalyzerTests.ClassNotStructId
✅ StructId.RecordAnalyzerTests.PartialRecordStructNotReadonly
✅ StructId.RecordAnalyzerTests.PartialStringRecordStructNotReadonly
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructNoStructId
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructNotPartial
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructWithNonValueConstructor
✅ StructId.RecordAnalyzerTests.ReadonlyStringRecordStructNotPartial
✅ StructId.RecordAnalyzerTests.RecordStructNoStructId
✅ StructId.RecordAnalyzerTests.RecordStructNotReadonlyNorPartial
✅ StructId.RecordAnalyzerTests.StructNotStructId
✅ StructId.RecordCodeFixTests.AddPartialKeyword
✅ StructId.RecordCodeFixTests.AddReadOnlyModifier
✅ StructId.RecordCodeFixTests.ChangeRecordStruct
✅ StructId.RecordCtorCodeFixTests.RemoveCtor
✅ StructId.RecordCtorCodeFixTests.RenameValue
✅ StructId.TemplateAnalyzerTests.ClassNoTemplate
✅ StructId.TemplateAnalyzerTests.ClassRecordNoTemplate
✅ StructId.TemplateAnalyzerTests.PartialTSelfNotFileLocal
✅ StructId.TemplateAnalyzerTests.RecordStructNoTemplate
✅ StructId.TemplateAnalyzerTests.TemplateNotTSelf
✅ StructId.TemplateAnalyzerTests.TemplateRecordClassNotStruct
✅ StructId.TemplateAnalyzerTests.TemplateRecordStructNotFile
✅ StructId.TemplateAnalyzerTests.TemplateRecordStructNotPartial
✅ StructId.TemplateAnalyzerTests.TemplateStructNotRecord
✅ StructId.TemplateAnalyzerTests.TemplateWithNonValueConstructor
✅ StructId.TemplateCodeFixTests.AddFileLocal
✅ StructId.TemplateCodeFixTests.AddFileLocalToPartial
✅ StructId.TemplateCodeFixTests.AddPartialKeyword
✅ StructId.TemplateCodeFixTests.ChangeClassToRecordStruct
✅ StructId.TemplateCodeFixTests.ChangeStructToRecordStruct
✅ StructId.TemplateCodeFixTests.RemoveInternalKeyword
✅ StructId.TemplateCodeFixTests.RemovePublicKeyword
✅ StructId.TemplateCodeFixTests.RenameTSelf
✅ StructId.TemplateGeneratorTests.GenerateComparable
✅ StructId.TemplateGeneratorTests.GenerateComparableExplicitImpl

🧪 Details on Microsoft Windows 10.0.20348

✅ StructId.CodeTemplateTests.AddsStructIdNamespace
✅ StructId.CodeTemplateTests.AppliesValueTemplate
✅ StructId.CodeTemplateTests.PreservesPrimaryConstructor
✅ StructId.CodeTemplateTests.PreservesTrivia
✅ StructId.CodeTemplateTests.RemovesFileLocalTypes
✅ StructId.ConstructorGeneratorTests.GenerateRecordConstructor
✅ StructId.ConstructorGeneratorTests.GenerateRecordConstructorInGlobalNamespace
✅ StructId.ConstructorGeneratorTests.GenerateRecordStringConstructor
✅ StructId.DapperGeneratorTests.GenerateCustomHandler
✅ StructId.DapperGeneratorTests.GenerateHandler
✅ StructId.DapperGeneratorTests.GenerateTempletizedHandler
✅ StructId.DapperGeneratorTests.SkipsUnsupported
✅ StructId.Functional.FunctionalTests.CustomTemplate
✅ StructId.Functional.FunctionalTests.EntityFramework
✅ StructId.Functional.FunctionalTests.EqualityTest
✅ StructId.Functional.FunctionalTests.GuidImplementUtf8SpanFormattable
✅ StructId.Functional.FunctionalTests.ImplementsFormattable
✅ StructId.Functional.FunctionalTests.ImplicitAndExplicitCast
✅ StructId.Functional.FunctionalTests.Newtonsoft
✅ StructId.Functional.FunctionalTests.SpanFormattableIdsImplementISpanFormattable
✅ StructId.Functional.FunctionalTests.StringIdDoesNotImplementISpanFormattable
✅ StructId.Functional.UlidTests.Dapper
✅ StructId.Functional.UlidTests.DapperUlid
✅ StructId.Functional.UlidTests.EntityFramework
✅ StructId.NewtonsoftJsonGeneratorTests.DoesNotGenerateIfNewtonsoftJsonNotPresent
✅ StructId.NewtonsoftJsonGeneratorTests.GenerateIfNewtonsoftJsonPresent
✅ StructId.RecordAnalyzerTests.ClassNotStructId
✅ StructId.RecordAnalyzerTests.PartialRecordStructNotReadonly
✅ StructId.RecordAnalyzerTests.PartialStringRecordStructNotReadonly
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructNoStructId
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructNotPartial
✅ StructId.RecordAnalyzerTests.ReadonlyRecordStructWithNonValueConstructor
✅ StructId.RecordAnalyzerTests.ReadonlyStringRecordStructNotPartial
✅ StructId.RecordAnalyzerTests.RecordStructNoStructId
✅ StructId.RecordAnalyzerTests.RecordStructNotReadonlyNorPartial
✅ StructId.RecordAnalyzerTests.StructNotStructId
✅ StructId.RecordCodeFixTests.AddPartialKeyword
✅ StructId.RecordCodeFixTests.AddReadOnlyModifier
✅ StructId.RecordCodeFixTests.ChangeRecordStruct
✅ StructId.RecordCtorCodeFixTests.RemoveCtor
✅ StructId.RecordCtorCodeFixTests.RenameValue
✅ StructId.TemplateAnalyzerTests.ClassNoTemplate
✅ StructId.TemplateAnalyzerTests.ClassRecordNoTemplate
✅ StructId.TemplateAnalyzerTests.PartialTSelfNotFileLocal
✅ StructId.TemplateAnalyzerTests.RecordStructNoTemplate
✅ StructId.TemplateAnalyzerTests.TemplateNotTSelf
✅ StructId.TemplateAnalyzerTests.TemplateRecordClassNotStruct
✅ StructId.TemplateAnalyzerTests.TemplateRecordStructNotFile
✅ StructId.TemplateAnalyzerTests.TemplateRecordStructNotPartial
✅ StructId.TemplateAnalyzerTests.TemplateStructNotRecord
✅ StructId.TemplateAnalyzerTests.TemplateWithNonValueConstructor
✅ StructId.TemplateCodeFixTests.AddFileLocal
✅ StructId.TemplateCodeFixTests.AddFileLocalToPartial
✅ StructId.TemplateCodeFixTests.AddPartialKeyword
✅ StructId.TemplateCodeFixTests.ChangeClassToRecordStruct
✅ StructId.TemplateCodeFixTests.ChangeStructToRecordStruct
✅ StructId.TemplateCodeFixTests.RemoveInternalKeyword
✅ StructId.TemplateCodeFixTests.RemovePublicKeyword
✅ StructId.TemplateCodeFixTests.RenameTSelf
✅ StructId.TemplateGeneratorTests.GenerateComparable
✅ StructId.TemplateGeneratorTests.GenerateComparableExplicitImpl

from dotnet-retest v0.6.3 on .NET 8.0.11 with 💜

@kzu kzu enabled auto-merge (rebase) December 22, 2024 21:13
@kzu kzu merged commit 513689a into main Dec 22, 2024
11 checks passed
@kzu kzu deleted the dev/nsdetect branch December 22, 2024 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants