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(); }