Skip to content

Commit

Permalink
Regenerate baselines
Browse files Browse the repository at this point in the history
  • Loading branch information
jeskew committed Mar 27, 2024
1 parent 23d57b2 commit e2b37ee
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 29 deletions.
Expand Up @@ -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 }
Expand Down Expand Up @@ -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": {
Expand All @@ -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"
//@ }
Expand Down Expand Up @@ -855,6 +849,12 @@ type inlineDiscriminatedUnion3 = {
//@ "discriminator": {
//@ "propertyName": "type",
//@ "mapping": {
//@ "a": {
//@ "$ref": "#/definitions/typeA"
//@ },
//@ "b": {
//@ "$ref": "#/definitions/typeB"
//@ },
//@ }
//@ }
//@ }
Expand Down
18 changes: 7 additions & 11 deletions src/Bicep.Core/Emit/TemplateWriter.cs
Expand Up @@ -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),
Expand All @@ -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)
{
Expand All @@ -887,17 +886,15 @@ WildcardImportTypePropertyReferenceExpression or
}
}

private IEnumerable<ObjectPropertyExpression> GetDiscriminatedUnionMappingEntries(
private static IEnumerable<ObjectPropertyExpression> 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)
{
Expand All @@ -911,8 +908,7 @@ WildcardImportTypePropertyReferenceExpression or

yield return ExpressionFactory.CreateObjectProperty(
discriminatorValue,
variantResolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax),
sourceSyntax);
variantResolution.GetTypePropertiesForResolvedReferenceExpression(sourceSyntax: null));
}
}
else
Expand Down

0 comments on commit e2b37ee

Please sign in to comment.