コード例 #1
0
        protected override void ResolveEmbeddedFilesFromExternalSourceDirectives(
            SyntaxTree tree,
            SourceReferenceResolver resolver,
            OrderedSet <string> embeddedFiles,
            DiagnosticBag diagnostics
            )
        {
            foreach (
                LineDirectiveTriviaSyntax directive in tree.GetRoot()
                .GetDirectives(
                    d =>
                    d.IsActive && !d.HasErrors && d.Kind() == SyntaxKind.LineDirectiveTrivia
                    )
                )
            {
                var path = (string?)directive.File.Value;
                if (path == null)
                {
                    continue;
                }

                string?resolvedPath = resolver.ResolveReference(path, tree.FilePath);
                if (resolvedPath == null)
                {
                    diagnostics.Add(
                        MessageProvider.CreateDiagnostic(
                            (int)ErrorCode.ERR_NoSourceFile,
                            directive.File.GetLocation(),
                            path,
                            CSharpResources.CouldNotFindFile
                            )
                        );
                    continue;
                }

                embeddedFiles.Add(resolvedPath);
            }
        }