예제 #1
0
        private void EmitDependsOn(DeclaredSymbol declaredSymbol)
        {
            var dependencies = context.ResourceDependencies[declaredSymbol];

            if (!dependencies.Any())
            {
                return;
            }

            writer.WritePropertyName("dependsOn");
            writer.WriteStartArray();
            // need to put dependencies in a deterministic order to generate a deterministic template
            foreach (var dependency in dependencies.OrderBy(x => x.Name))
            {
                switch (dependency)
                {
                case ResourceSymbol resourceDependency:
                    var typeReference = EmitHelpers.GetTypeReference(resourceDependency);
                    emitter.EmitResourceIdReference(resourceDependency.DeclaringResource, typeReference);
                    break;

                case ModuleSymbol moduleDependency:
                    emitter.EmitModuleResourceIdExpression(moduleDependency);
                    break;

                default:
                    throw new InvalidOperationException($"Found dependency '{dependency.Name}' of unexpected type {dependency.GetType()}");
                }
            }
            writer.WriteEndArray();
        }