func GetAllowedProperties()

in internal/langserver/schema/schema.go [104:142]


func GetAllowedProperties(resourceType *types.TypeBase) []Property {
	if resourceType == nil {
		return []Property{}
	}
	props := make([]Property, 0)
	switch t := (*resourceType).(type) {
	case *types.ArrayType:
		return props
	case *types.DiscriminatedObjectType:
		for key, value := range t.BaseProperties {
			if prop := PropertyFromObjectProperty(key, value); prop != nil {
				props = append(props, *prop)
			}
		}
		for _, discriminator := range t.Elements {
			props = append(props, GetAllowedProperties(discriminator.Type)...)
		}
	case *types.ObjectType:
		for key, value := range t.Properties {
			if prop := PropertyFromObjectProperty(key, value); prop != nil {
				props = append(props, *prop)
			}
		}
		if t.AdditionalProperties != nil {
			props = append(props, GetAllowedProperties(t.AdditionalProperties.Type)...)
		}
	case *types.ResourceType:
		if t.Body != nil {
			return GetAllowedProperties(t.Body.Type)
		}
	case *types.AnyType:
	case *types.BooleanType:
	case *types.IntegerType:
	case *types.StringType:
	case *types.StringLiteralType:
	case *types.UnionType:
	}
	return props
}