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