in Backend/Core/ForTea.Core/Psi/Cache/Impl/T4PsiFileSelector.cs [41:73]
private IPsiSourceFile TryFindFileInSolution([NotNull] VirtualFileSystemPath path,
[NotNull] IPsiSourceFile requester)
{
if (path.IsEmpty) return null;
var potentialProjectFiles = Solution
.FindProjectItemsByLocation(path)
.OfType<IProjectFile>()
.AsList();
var requesterPsiModule = requester.PsiModule;
var targetFrameworkId = requesterPsiModule.GetT4TargetFrameworkId();
IProjectFile correctBuildActionItem;
if (targetFrameworkId == null)
{
correctBuildActionItem = null;
Logger.Warn(
"Requester has no target framework! Requester: {0}, requester module: {1}",
requester.GetType(),
requesterPsiModule.GetType()
);
}
else
{
correctBuildActionItem = potentialProjectFiles
.FirstOrDefault(file => file.Properties.GetBuildAction(targetFrameworkId) == BuildAction.NONE);
}
var projectFile = correctBuildActionItem ?? potentialProjectFiles.FirstOrDefault();
if (projectFile == null) return null;
var sourceFiles = projectFile.ToSourceFiles();
var correctTargetFrameworkItem = sourceFiles
.FirstOrDefault<object>(null, (_, file) => file.PsiModule.GetT4TargetFrameworkId() == targetFrameworkId);
return correctTargetFrameworkItem ?? sourceFiles.FirstOrDefault();
}