public override void VisitFSharpFile(IFSharpFile fsFile)
        {
            fsFile.TokenBuffer = fsFile.ActualTokenBuffer; // todo: remove this when/if a proper lexer is implemented
            var sourceFile  = fsFile.GetSourceFile();
            var fileKind    = GetFSharpFileKind(fsFile);
            var hasPairFile = myCheckerService.HasPairFile(sourceFile);

            Builder.CreateProjectFilePart(new FSharpProjectFilePart(sourceFile, fileKind, hasPairFile));

            foreach (var declaration in fsFile.DeclarationsEnumerable)
            {
                var qualifiers = declaration.LongIdentifier.Qualifiers;
                foreach (var qualifier in qualifiers)
                {
                    var qualifierName = FSharpNamesUtil.RemoveBackticks(qualifier.GetText());
                    Builder.StartPart(new QualifiedNamespacePart(qualifier.GetTreeStartOffset(), Builder.Intern(qualifierName)));
                }

                declaration.Accept(this);

                foreach (var _ in qualifiers)
                {
                    Builder.EndPart();
                }
            }
        }
        public FSharpReferenceSearcher(IDeclaredElementsSet elements, bool findCandidates)
        {
            myElements       = elements;
            myFindCandidates = findCandidates;
            myElementNames   = new HashSet <string>();

            foreach (var element in elements)
            {
                myElementNames.AddRange(FSharpNamesUtil.GetPossibleSourceNames(element));
            }
        }
Esempio n. 3
0
        public FSharpReferenceSearcher(IDeclaredElementsSet elements, bool findCandidates)
        {
            myElements       = new DeclaredElementsSet(elements.Where(e => !(e is IFSharpSymbolElement)));
            myFSharpSymbols  = elements.OfType <IFSharpSymbolElement>().Select(e => e.Symbol).ToIList();
            myFindCandidates = findCandidates;
            myElementNames   = new HashSet <string>();

            foreach (var element in elements)
            {
                myElementNames.AddRange(FSharpNamesUtil.GetPossibleSourceNames(element));
            }
        }
Esempio n. 4
0
        public static string[] GetQualifiersAndName(this FSharpIdentifierToken token)
        {
            if (!(token.Parent is ILongIdentifier longIdentifier))
            {
                return new[] { FSharpNamesUtil.RemoveBackticks(token.GetText()) }
            }
            ;

            var names = new FrugalLocalHashSet <string>();

            foreach (var id in longIdentifier.IdentifiersEnumerable)
            {
                names.Add(FSharpNamesUtil.RemoveBackticks(id.GetText()));

                if (id == token)
                {
                    break;
                }
            }
            return(names.ToArray());
        }
Esempio n. 5
0
        public static TreeTextRange GetNameRange([CanBeNull] this IFSharpIdentifier identifier)
        {
            if (identifier == null)
            {
                return(TreeTextRange.InvalidRange);
            }

            if (identifier is IActivePatternId activePatternId)
            {
                return(activePatternId.GetCasesRange());
            }

            var nameRange       = identifier.GetTreeTextRange();
            var identifierToken = identifier.IdentifierToken;

            if (identifierToken == null)
            {
                return(nameRange);
            }

            return(FSharpNamesUtil.IsEscapedWithBackticks(identifierToken.GetText())
        ? nameRange.TrimLeft(2).TrimRight(2)
        : nameRange);
        }
Esempio n. 6
0
 public override IEnumerable <string> GetAllPossibleWordsInFile(IDeclaredElement element) =>
 FSharpNamesUtil.GetPossibleSourceNames(element);
 public IEnumerable <string> GetAllPossibleWordsInFile(IDeclaredElement element)
 {
     return(FSharpNamesUtil.GetPossibleSourceNames(element));
 }