Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 130 additions & 81 deletions src/Compiler/Driver/CompilerImports.fs

Large diffs are not rendered by default.

9 changes: 4 additions & 5 deletions src/Compiler/Driver/CompilerImports.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -208,13 +208,12 @@ type TcImports =
static member BuildTcImports:
tcConfigP: TcConfigProvider * dependencyProvider: DependencyProvider -> NodeCode<TcGlobals * TcImports>

/// Process #r in F# Interactive.
/// Process a group of #r in F# Interactive.
/// Adds the reference to the tcImports and add the ccu to the type checking environment.
val RequireDLL:
val RequireReferences:
ctok: CompilationThreadToken *
tcImports: TcImports *
tcEnv: TcEnv *
thisAssemblyName: string *
referenceRange: range *
file: string ->
TcEnv * (ImportedBinary list * ImportedAssembly list)
resolutions: AssemblyResolution list ->
TcEnv * ImportedAssembly list
1 change: 0 additions & 1 deletion src/Compiler/Driver/ParseAndCheckInputs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,6 @@ let TestInteractionParserAndExit (tokenizer: Tokenizer, lexbuf: LexBuffer<char>,
while true do
match (Parser.interaction (fun _ -> tokenizer ()) lexbuf) with
| ParsedScriptInteraction.Definitions (l, m) -> printfn "Parsed OK, got %d defs @ %a" l.Length outputRange m
| ParsedScriptInteraction.HashDirective (_, m) -> printfn "Parsed OK, got hash @ %a" outputRange m

exiter.Exit 0

Expand Down
1 change: 0 additions & 1 deletion src/Compiler/FSComp.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ tupleRequiredInAbstractMethod,"\nA tuple type is required for one or more argume
226,buildInvalidSourceFileExtensionUpdated,"The file extension of '%s' is not recognized. Source files must have extension .fs, .fsi, .fsx or .fsscript"
226,buildInvalidSourceFileExtensionML,"The file extension of '%s' is not recognized. Source files must have extension .fs, .fsi, .fsx or .fsscript. To enable the deprecated use of .ml or .mli extensions, use '--langversion:5.0' and '--mlcompatibility'."
227,buildCouldNotResolveAssembly,"Could not resolve assembly '%s'"
228,buildCouldNotResolveAssemblyRequiredByFile,"Could not resolve assembly '%s' required by '%s'"
229,buildErrorOpeningBinaryFile,"Error opening binary file '%s': %s"
231,buildDifferentVersionMustRecompile,"The F#-compiled DLL '%s' needs to be recompiled to be used with this version of F#"
232,buildInvalidHashIDirective,"Invalid directive. Expected '#I \"<path>\"'."
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/FSharp.Compiler.Service.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<AssemblyName>FSharp.Compiler.Service</AssemblyName>
<AllowCrossTargeting>true</AllowCrossTargeting>
<DefineConstants>$(DefineConstants);COMPILER</DefineConstants>
<DefineConstants Condition="'$(FSHARPCORE_USE_PACKAGE)' == 'true'">$(DefineConstants);USE_SHIPPED_FSCORE</DefineConstants>
<DefineConstants Condition="'$(FSHARPCORE_USE_PACKAGE)' == 'true'">$(DefineConstants);FSHARPCORE_USE_PACKAGE</DefineConstants>
<OtherFlags>$(OtherFlags) --extraoptimizationloops:1</OtherFlags>
<!-- 1182: Unused variables -->
<OtherFlags>$(OtherFlags) --warnon:1182</OtherFlags>
Expand Down
669 changes: 379 additions & 290 deletions src/Compiler/Interactive/fsi.fs

Large diffs are not rendered by default.

5 changes: 1 addition & 4 deletions src/Compiler/SyntaxTree/SyntaxTree.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1651,10 +1651,7 @@ type ParsedSigFileFragment =
trivia: SynModuleOrNamespaceSigTrivia

[<NoEquality; NoComparison; RequireQualifiedAccess>]
type ParsedScriptInteraction =
| Definitions of defns: SynModuleDecl list * range: range

| HashDirective of hashDirective: ParsedHashDirective * range: range
type ParsedScriptInteraction = Definitions of defns: SynModuleDecl list * range: range

[<NoEquality; NoComparison>]
type ParsedImplFile = ParsedImplFile of hashDirectives: ParsedHashDirective list * fragments: ParsedImplFileFragment list
Expand Down
5 changes: 1 addition & 4 deletions src/Compiler/SyntaxTree/SyntaxTree.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -1842,10 +1842,7 @@ type ParsedSigFileFragment =

/// Represents a parsed syntax tree for an F# Interactive interaction
[<NoEquality; NoComparison; RequireQualifiedAccess>]
type ParsedScriptInteraction =
| Definitions of defns: SynModuleDecl list * range: range

| HashDirective of hashDirective: ParsedHashDirective * range: range
type ParsedScriptInteraction = Definitions of defns: SynModuleDecl list * range: range

/// Represents a parsed implementation file made up of fragments
[<NoEquality; NoComparison>]
Expand Down
21 changes: 17 additions & 4 deletions src/Compiler/TypedTree/TypeProviders.fs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type ResolutionEnvironment =
{ ResolutionFolder: string
OutputFile: string option
ShowResolutionMessages: bool
ReferencedAssemblies: string[]
GetReferencedAssemblies: unit -> string[]
TemporaryFolder: string }

/// Load a the design-time part of a type-provider into the host process, and look for types
Expand Down Expand Up @@ -118,19 +118,32 @@ let CreateTypeProvider (
let e = StripException (StripException err)
raise (TypeProviderError(FSComp.SR.etTypeProviderConstructorException(e.Message), typeProviderImplementationType.FullName, m))

let getReferencedAssemblies () =
resolutionEnvironment.GetReferencedAssemblies() |> Array.distinct

if typeProviderImplementationType.GetConstructor([| typeof<TypeProviderConfig> |]) <> null then

// Create the TypeProviderConfig to pass to the type provider constructor
let e =
TypeProviderConfig(systemRuntimeContainsType,
#if FSHARPCORE_USE_PACKAGE
TypeProviderConfig(systemRuntimeContainsType,
ReferencedAssemblies=getReferencedAssemblies(),
ResolutionFolder=resolutionEnvironment.ResolutionFolder,
RuntimeAssembly=runtimeAssemblyPath,
ReferencedAssemblies=Array.copy resolutionEnvironment.ReferencedAssemblies,
TemporaryFolder=resolutionEnvironment.TemporaryFolder,
IsInvalidationSupported=isInvalidationSupported,
IsHostedExecution= isInteractive,
SystemRuntimeAssemblyVersion = systemRuntimeAssemblyVersion)

#else
TypeProviderConfig(systemRuntimeContainsType,
getReferencedAssemblies,
ResolutionFolder=resolutionEnvironment.ResolutionFolder,
RuntimeAssembly=runtimeAssemblyPath,
TemporaryFolder=resolutionEnvironment.TemporaryFolder,
IsInvalidationSupported=isInvalidationSupported,
IsHostedExecution= isInteractive,
SystemRuntimeAssemblyVersion = systemRuntimeAssemblyVersion)
#endif
protect (fun () -> Activator.CreateInstance(typeProviderImplementationType, [| box e|]) :?> ITypeProvider )

elif typeProviderImplementationType.GetConstructor [| |] <> null then
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/TypedTree/TypeProviders.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type ResolutionEnvironment =
ShowResolutionMessages: bool

/// All referenced assemblies, including the type provider itself, and possibly other type providers.
ReferencedAssemblies: string[]
GetReferencedAssemblies: unit -> string[]

/// The folder for temporary files
TemporaryFolder: string
Expand Down
16 changes: 8 additions & 8 deletions src/Compiler/Utilities/illib.fs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ open System.IO
open System.Threading
open System.Threading.Tasks
open System.Runtime.CompilerServices
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
open FSharp.Core.CompilerServices.StateMachineHelpers
#endif

Expand Down Expand Up @@ -931,7 +931,7 @@ type CancellableBuilder() =

member inline _.Bind(comp, [<InlineIfLambda>] k) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif

Expand All @@ -941,7 +941,7 @@ type CancellableBuilder() =

member inline _.BindReturn(comp, [<InlineIfLambda>] k) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif

Expand All @@ -951,7 +951,7 @@ type CancellableBuilder() =

member inline _.Combine(comp1, comp2) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif

Expand All @@ -961,7 +961,7 @@ type CancellableBuilder() =

member inline _.TryWith(comp, [<InlineIfLambda>] handler) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif

Expand All @@ -982,7 +982,7 @@ type CancellableBuilder() =

member inline _.Using(resource, [<InlineIfLambda>] comp) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif
let body = comp resource
Expand All @@ -1006,7 +1006,7 @@ type CancellableBuilder() =

member inline _.TryFinally(comp, [<InlineIfLambda>] compensation) =
Cancellable(fun ct ->
#if !USE_SHIPPED_FSCORE
#if !FSHARPCORE_USE_PACKAGE
__debugPoint ""
#endif

Expand Down Expand Up @@ -1396,7 +1396,7 @@ module MapAutoOpens =

static member Empty: Map<'Key, 'Value> = Map.empty

#if USE_SHIPPED_FSCORE
#if FSHARPCORE_USE_PACKAGE
member x.Values = [ for KeyValue (_, v) in x -> v ]
#endif

Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Utilities/illib.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ module internal MapAutoOpens =

static member Empty: Map<'Key, 'Value> when 'Key: comparison

#if USE_SHIPPED_FSCORE
#if FSHARPCORE_USE_PACKAGE
member Values: 'Value list
#endif

Expand Down
3 changes: 1 addition & 2 deletions src/Compiler/pars.fsy
Original file line number Diff line number Diff line change
Expand Up @@ -606,15 +606,14 @@ interactiveExpr:
{ match $2 with
| Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3))
| _ -> ()
let attrDecls = if not (isNil $1) then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] in
let attrDecls = if not (isNil $1) then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else []
attrDecls @ [ mkSynExprDecl $3 ] }

/* A #directive interaction in F# Interactive */
interactiveHash:
| hashDirective
{ [SynModuleDecl.HashDirective($1, rhs parseState 1)] }


/* One or more separators between interactions in F# Interactive */
interactiveSeparators:
| interactiveSeparator { }
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.cs.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Sestavení {0} se nedalo přeložit.</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Sestavení {0} požadované souborem {1} se nedalo přeložit.</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Chyba při otevírání binárního souboru {0}: {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.de.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Assembly "{0}" konnte nicht aufgelöst werden.</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Die für "{1}" erforderliche Assembly "{0}" konnte nicht aufgelöst werden.</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Fehler beim Öffnen der Binärdatei "{0}": {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.es.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">No se pudo resolver el ensamblado '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">No se pudo resolver el ensamblado '{0}' requerido por '{1}'.</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Error al abrir el archivo binario '{0}': {1}.</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.fr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Impossible de résoudre l'assembly '{0}'</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Impossible de résoudre l'assembly '{0}' requis par '{1}'</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Erreur lors de l'ouverture du fichier binaire '{0}' : {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.it.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Non è stato possibile risolvere l'assembly '{0}'</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Non è stato possibile risolvere l'assembly '{0}' richiesto da '{1}'</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Errore durante l'apertura del file binario '{0}': {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.ja.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">アセンブリ '{0}' を解決できませんでした</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">{1}' に必要なアセンブリ '{0}' を解決できませんでした</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">バイナリ ファイル '{0}' を開くときにエラーが発生しました: {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.ko.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">'{0}' 어셈블리를 확인할 수 없습니다.</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">{1}'에 필요한 '{0}' 어셈블리를 확인할 수 없습니다.</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">이진 파일 '{0}'을(를) 여는 동안 오류가 발생했습니다. {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.pl.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Nie można rozpoznać zestawu „{0}”</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Nie można rozpoznać zestawu „{0}” wymaganego przez „{1}”</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Błąd podczas otwierania pliku binarnego „{0}”: {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.pt-BR.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Não foi possível resolver o assembly '{0}'</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Não foi possível resolver o assembly '{0}' requerido por '{1}'</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Erro ao abrir o arquivo binário '{0}': {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.ru.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">Не удалось разрешить сборку "{0}".</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">Не удалось разрешить сборку "{0}", необходимую для "{1}"</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">Ошибка при открытии двоичного файла "{0}": {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.tr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">'{0}' bütünleştirilmiş kodu çözümlenemedi</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">{1}' tarafından istenen '{0}' bütünleştirilmiş kodu çözümlenemedi</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">{0}': {1} ikili dosyasını açma işleminde hata</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.zh-Hans.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">无法解析程序集“{0}”</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">无法解析“{1}”所需的程序集“{0}”</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">打开二进制文件“{0}”时出错: {1}</target>
Expand Down
5 changes: 0 additions & 5 deletions src/Compiler/xlf/FSComp.txt.zh-Hant.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@
<target state="translated">無法解析組件 '{0}'</target>
<note />
</trans-unit>
<trans-unit id="buildCouldNotResolveAssemblyRequiredByFile">
<source>Could not resolve assembly '{0}' required by '{1}'</source>
<target state="translated">無法解析 '{1}' 所需的組件 '{0}'</target>
<note />
</trans-unit>
<trans-unit id="buildErrorOpeningBinaryFile">
<source>Error opening binary file '{0}': {1}</source>
<target state="translated">開啟二進位檔案 '{0}' 時發生錯誤: {1}</target>
Expand Down
Loading