diff --git a/src/Bicep.Core.Samples/Files/baselines/TypeDeclarations_LF/main.sourcemap.bicep b/src/Bicep.Core.Samples/Files/baselines/TypeDeclarations_LF/main.sourcemap.bicep index efc1e67760d..0006414f769 100644 --- a/src/Bicep.Core.Samples/Files/baselines/TypeDeclarations_LF/main.sourcemap.bicep +++ b/src/Bicep.Core.Samples/Files/baselines/TypeDeclarations_LF/main.sourcemap.bicep @@ -510,24 +510,6 @@ type discriminatedUnion1 = typeA | typeB //@ } //@ } //@ }, -//@ "a": { -//@ "$ref": "#/definitions/typeA" -//@ }, -//@ "b": { -//@ "$ref": "#/definitions/typeB" -//@ }, -//@ "a": { -//@ "$ref": "#/definitions/typeA" -//@ }, -//@ "b": { -//@ "$ref": "#/definitions/typeB" -//@ }, -//@ "a": { -//@ "$ref": "#/definitions/typeA" -//@ }, -//@ "b": { -//@ "$ref": "#/definitions/typeB" -//@ }, @discriminator('type') type discriminatedUnion2 = { type: 'c', value: string } | { type: 'd', value: bool } @@ -659,6 +641,12 @@ type discriminatedUnion3 = discriminatedUnion1 | discriminatedUnion2 | { type: ' //@ "discriminator": { //@ "propertyName": "type", //@ "mapping": { +//@ "a": { +//@ "$ref": "#/definitions/typeA" +//@ }, +//@ "b": { +//@ "$ref": "#/definitions/typeB" +//@ }, //@ "e": { //@ "type": "object", //@ "properties": { @@ -684,6 +672,12 @@ type discriminatedUnion4 = discriminatedUnion1 | (discriminatedUnion2 | typeE) //@ "discriminator": { //@ "propertyName": "type", //@ "mapping": { +//@ "a": { +//@ "$ref": "#/definitions/typeA" +//@ }, +//@ "b": { +//@ "$ref": "#/definitions/typeB" +//@ }, //@ "e": { //@ "$ref": "#/definitions/typeE" //@ } @@ -855,6 +849,12 @@ type inlineDiscriminatedUnion3 = { //@ "discriminator": { //@ "propertyName": "type", //@ "mapping": { +//@ "a": { +//@ "$ref": "#/definitions/typeA" +//@ }, +//@ "b": { +//@ "$ref": "#/definitions/typeB" +//@ }, //@ } //@ } //@ } diff --git a/src/Bicep.Core/Emit/TemplateWriter.cs b/src/Bicep.Core/Emit/TemplateWriter.cs index 0b70dda0927..e000b6424d7 100644 --- a/src/Bicep.Core/Emit/TemplateWriter.cs +++ b/src/Bicep.Core/Emit/TemplateWriter.cs @@ -839,7 +839,7 @@ WildcardImportTypePropertyReferenceExpression or ITypeReferenceAccessExpression => ResolveTypeReferenceExpression(memberExpression) switch { ResolvedInternalReference udtRef => GetDiscriminatedUnionMappingEntries(discriminatorPropertyName, udtRef.Declaration, udtRef), - ResourceDerivedTypeResolution rdtRef => GetDiscriminatedUnionMappingEntries(discriminatorPropertyName, rdtRef, memberExpression.SourceSyntax), + ResourceDerivedTypeResolution rdtRef => GetDiscriminatedUnionMappingEntries(discriminatorPropertyName, rdtRef), _ => throw new UnreachableException(), }, _ => GetDiscriminatedUnionMappingEntries(discriminatorPropertyName, memberExpression, null), @@ -861,9 +861,8 @@ WildcardImportTypePropertyReferenceExpression or { yield return ExpressionFactory.CreateObjectProperty( DiscriminatorValue(discriminatorPropertyName, objectUnionMemberExpr.ExpressedObjectType), - memberResolution?.GetTypePropertiesForResolvedReferenceExpression(memberDeclaration.SourceSyntax) - ?? GetTypePropertiesForObjectType(objectUnionMemberExpr), - memberDeclaration.SourceSyntax); + memberResolution?.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax: null) + ?? GetTypePropertiesForObjectType(objectUnionMemberExpr)); } else if (memberDeclaration is DiscriminatedObjectTypeExpression nestedDiscriminatedMemberExpr) { @@ -887,17 +886,15 @@ WildcardImportTypePropertyReferenceExpression or } } - private IEnumerable GetDiscriminatedUnionMappingEntries( + private static IEnumerable GetDiscriminatedUnionMappingEntries( string discriminatorPropertyName, - ResourceDerivedTypeResolution resolution, - SyntaxBase? sourceSyntax) + ResourceDerivedTypeResolution resolution) { if (resolution.DerivedType is ObjectType @object) { yield return ExpressionFactory.CreateObjectProperty( DiscriminatorValue(discriminatorPropertyName, @object), - resolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax), - sourceSyntax); + resolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax: null)); } else if (resolution.DerivedType is DiscriminatedObjectType discriminatedObject) { @@ -911,8 +908,7 @@ WildcardImportTypePropertyReferenceExpression or yield return ExpressionFactory.CreateObjectProperty( discriminatorValue, - variantResolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax), - sourceSyntax); + variantResolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax: null)); } } else