public void ProcessBeforeInterior()

in Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/T4CSharpCodeGenerationInfoCollectorBase.cs [62:91]


    public void ProcessBeforeInterior(ITreeNode element)
    {
      AppendRemainingMessage(element);
      if (!(element is IT4IncludeDirective include)) return;
      var file = (IT4File)element.GetContainingFile().NotNull();
      Results.Push(new T4CSharpCodeGenerationIntermediateResult(file, Interrupter));
      var sourceFile = IncludeResolver.Resolve(include.ResolvedPath);
      if (sourceFile == null)
      {
        var target = include.GetFirstAttribute(T4DirectiveInfoManager.Include.FileAttribute)?.Value ?? element;
        var data = T4FailureRawData.FromElement(target, $"Unresolved include: {target.GetText()}");
        Interrupter.InterruptAfterProblem(data);
        Guard.StartProcessing(file.LogicalPsiSourceFile.GetLocation());
        return;
      }

      if (include.Once && Guard.HasSeenFile(sourceFile.GetLocation())) return;
      if (!Guard.CanProcess(sourceFile.GetLocation()))
      {
        var target = include.GetFirstAttribute(T4DirectiveInfoManager.Include.FileAttribute)?.Value ?? element;
        var data = T4FailureRawData.FromElement(target, "Recursion in includes");
        Interrupter.InterruptAfterProblem(data);
        Guard.StartProcessing(sourceFile.GetLocation());
        return;
      }

      var resolved = include.IncludedFile;
      Guard.StartProcessing(sourceFile.GetLocation());
      resolved?.ProcessDescendants(this);
    }