Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
221224e
always emit the local scope's start offset
brettfo Mar 15, 2018
0db8fe4
Merge pull request #4526 from Microsoft/merges/master-to-dev15.7
brettfo Mar 15, 2018
db7758f
build portable PDBs from SDK projects and convert to Windows PDBs aft…
brettfo Mar 14, 2018
3e2d4fa
always emit the local scope's start offset (#4530)
dotnet-bot Mar 15, 2018
77a9e0a
LOC CHECKIN | visualfsharp master | 20180315 (#4535)
v-zbsail Mar 15, 2018
351a481
Only set oulining if there is an outlining manager (#4520)
cartermp Mar 15, 2018
7453587
Merge pull request #4536 from brettfo/windows-pdb
brettfo Mar 15, 2018
8f8cbd6
Code Lens and Line Lens (#3608)
realvictorprm Mar 15, 2018
e212e66
remove old file (#4539)
dsyme Mar 15, 2018
02474f2
fix project file (#4540)
dsyme Mar 15, 2018
4dce3d1
remove comment (#4538)
KevinRansom Mar 15, 2018
8b52c97
Code Lens and Line Lens (#3608)
realvictorprm Mar 15, 2018
62d4cf0
remove comment (#4538)
KevinRansom Mar 15, 2018
48076b1
Tweaks
Mar 15, 2018
4c2a023
fix building in VS with PDB conversions
brettfo Mar 15, 2018
c87da60
Use C# code instead of manually modified DLL. (#4514)
0x53A Mar 15, 2018
c769fec
Revert code lens .... it's being stabilized in the branch 15.8 (#4547)
KevinRansom Mar 15, 2018
d7653dd
Merge pull request #4548 from brettfo/build-in-vs
brettfo Mar 15, 2018
b4174d8
Merge pull request #4542 from Microsoft/merges/dev15.7-to-dev15.8
brettfo Mar 15, 2018
16dfc2b
Merge remote-tracking branch 'upstream/master' into merges/master-to-…
brettfo Mar 15, 2018
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
5 changes: 2 additions & 3 deletions FSharp.Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
<PropertyGroup>
<!-- default NuGet package restore location -->
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == ''">$(NUGET_PACKAGES)</NuGetPackageRoot>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' AND '$(OS)' == 'Windows_NT'">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' AND '$(OS)' != 'Windows_NT'">$(HOME)/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == ''">$(MSBuildThisFileDirectory)packages</NuGetPackageRoot>
<!-- ensure there is a trailing slash -->
<NuGetPackageRoot Condition="!HasTrailingSlash('$(NuGetPackageRoot)') AND '$(OS)' == 'Windows_NT'">$(NuGetPackageRoot)\</NuGetPackageRoot>
<NuGetPackageRoot Condition="!HasTrailingSlash('$(NuGetPackageRoot)') AND '$(OS)' != 'Windows_NT'">$(NuGetPackageRoot)/</NuGetPackageRoot>
Expand Down Expand Up @@ -46,7 +45,7 @@

<!-- other -->
<PropertyGroup>
<DebugType>full</DebugType>
<DebugType>portable</DebugType>
<MicroBuildAssemblyFileLanguage>fs</MicroBuildAssemblyFileLanguage>
<UseStandardResourceNames>false</UseStandardResourceNames>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
1 change: 1 addition & 0 deletions FSharp.Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
</Target>

<Import Project="build\targets\AssemblyVersions.props" />
<Import Project="build\targets\ConvertPortablePdbs.targets" />
<Import Project="build\targets\GenerateAssemblyAttributes.targets" />
<Import Project="build\targets\GenerateInternalsVisibleTo.targets" />

Expand Down
1 change: 1 addition & 0 deletions NuGet.Config
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="myget.org roslyn tools" value="https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json" />
<add key="myget.org roslyn" value="https://dotnet.myget.org/F/roslyn-for-vs-for-mac/api/v3/index.json" />
<add key="myget.org symreader-converter" value="https://dotnet.myget.org/F/symreader-converter/api/v3/index.json" />
</packageSources>

</configuration>
3 changes: 2 additions & 1 deletion build.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@ if "%NEEDS_DOTNET_CLI_TOOLS%" == "1" (
)
set _dotnetcliexe=%~dp0Tools\dotnetcli\dotnet.exe
set _dotnet20exe=%~dp0Tools\dotnet20\dotnet.exe
set NUGET_PACKAGES=%~dp0Packages
set NUGET_PACKAGES=%~dp0packages
set path=%~dp0Tools\dotnet20\;%path%

echo ----------- Done with package restore, starting dependency uptake check -------------
Expand Down Expand Up @@ -963,6 +963,7 @@ set HOSTED_COMPILER=1

if "%TEST_NET40_FSHARPQA_SUITE%" == "1" (

set CSC_PIPE=%~dp0packages\Microsoft.Net.Compilers.2.7.0\tools\csc.exe
set FSC=!FSCBINPATH!\fsc.exe
set FSCOREDLLPATH=!FSCBinPath!\FSharp.Core.dll
set PATH=!FSCBINPATH!;!PATH!
Expand Down
20 changes: 20 additions & 0 deletions build/targets/ConvertPortablePdbs.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project>

<ItemGroup>
<PackageReference Include="Microsoft.DiaSymReader.Pdb2Pdb" Version="$(MicrosoftDiaSymReaderPdb2PdbPackageVersion)" />
</ItemGroup>

<Target Name="ConvertPortablePdbs"
AfterTargets="AfterBuild"
Condition="Exists('$(TargetPath)') AND ('$(DebugType)' == 'portable' OR '$(DebugType)' == 'embedded')">
<PropertyGroup>
<ConvertedPdbsDirectory>$(FinalOutputPath)\ConvertedPdbs</ConvertedPdbsDirectory>
<PdbConverterExe>$(NuGetPackageRoot)Microsoft.DiaSymReader.Pdb2Pdb\$(MicrosoftDiaSymReaderPdb2PdbPackageVersion)\tools\Pdb2Pdb.exe</PdbConverterExe>
<PdbConverterArgs>"$(TargetPath)" /out "$(ConvertedPdbsDirectory)\$(TargetName).pdb" /verbose /srcsvrvar SRC_INDEX=public</PdbConverterArgs>
</PropertyGroup>

<MakeDir Directories="$(ConvertedPdbsDirectory)" />
<Exec Command='"$(PdbConverterExe)" $(PdbConverterArgs)' />
</Target>

</Project>
1 change: 1 addition & 0 deletions build/targets/PackageVersions.props
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@

<!-- other packages -->
<MicrosoftCompositionPackageVersion>1.0.30</MicrosoftCompositionPackageVersion>
<MicrosoftDiaSymReaderPdb2PdbPackageVersion>1.1.0-roslyn-62714-01</MicrosoftDiaSymReaderPdb2PdbPackageVersion>
<MicrosoftMSXMLPackageVersion>8.0.0-alpha</MicrosoftMSXMLPackageVersion>
<MicrosoftVisualFSharpMSBuild150PackageVersion>1.0.1</MicrosoftVisualFSharpMSBuild150PackageVersion>
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
Expand Down
1 change: 1 addition & 0 deletions src/fsharp/NicePrint.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1970,6 +1970,7 @@ let isGeneratedExceptionField pos f = TastDefinitionPrinting.isGeneratedExce
let stringOfTyparConstraint denv tpc = stringOfTyparConstraints denv [tpc]
let stringOfTy denv x = x |> PrintTypes.layoutType denv |> showL
let prettyLayoutOfType denv x = x |> PrintTypes.prettyLayoutOfType denv
let prettyLayoutOfTypeNoCx denv x = x |> PrintTypes.prettyLayoutOfTypeNoConstraints denv
let prettyStringOfTy denv x = x |> PrintTypes.prettyLayoutOfType denv |> showL
let prettyStringOfTyNoCx denv x = x |> PrintTypes.prettyLayoutOfTypeNoConstraints denv |> showL
let stringOfRecdField denv x = x |> TastDefinitionPrinting.layoutRecdField false denv |> showL
Expand Down
11 changes: 11 additions & 0 deletions src/fsharp/service/service.fs
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,9 @@ type TypeCheckInfo
match item with
| Item.Types _ | Item.ModuleOrNamespaces _ -> true
| _ -> false

/// Find the most precise display context for the given line and column.
member __.GetBestDisplayEnvForPos cursorPos = GetBestEnvForPos cursorPos

member __.GetVisibleNamespacesAndModulesAtPosition(cursorPos: pos) : ModuleOrNamespaceRef list =
let (nenv, ad), m = GetBestEnvForPos cursorPos
Expand Down Expand Up @@ -1982,6 +1985,7 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
| _ ->
async.Return dflt


member info.GetToolTipText(line, colAtEndOfNames, lineStr, names, tokenTag, userOpName) =
info.GetStructuredToolTipText(line, colAtEndOfNames, lineStr, names, tokenTag, ?userOpName=userOpName)
|> Tooltips.Map Tooltips.ToFSharpToolTipText
Expand Down Expand Up @@ -2093,6 +2097,13 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
RequireCompilationThread ctok
scope.IsRelativeNameResolvableFromSymbol(pos, plid, symbol))

member info.GetDisplayEnvForPos(pos: pos) : Async<DisplayEnv option> =
let userOpName = "CodeLens"
reactorOp userOpName "GetDisplayContextAtPos" None (fun ctok scope ->
DoesNotRequireCompilerThreadTokenAndCouldPossiblyBeMadeConcurrent ctok
let (nenv, _), _ = scope.GetBestDisplayEnvForPos pos
Some nenv.DisplayEnv)

member info.ImplementationFiles =
if not keepAssemblyContents then invalidOp "The 'keepAssemblyContents' flag must be set to true on the FSharpChecker in order to access the checked contents of assemblies"
scopeOptX
Expand Down
3 changes: 3 additions & 0 deletions src/fsharp/service/service.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ type public FSharpCheckFileResults =

member internal GetVisibleNamespacesAndModulesAtPoint : pos -> Async<Tast.ModuleOrNamespaceRef[]>

/// Find the most precise display environment for the given line and column.
member internal GetDisplayEnvForPos : pos : pos -> Async<DisplayEnv option>

/// Determines if a long ident is resolvable at a specific point.
/// <param name="userOpName">An optional string used for tracing compiler operations associated with this request.</param>
member internal IsRelativeNameResolvable: cursorPos : pos * plid : string list * item: Item * ?userOpName: string -> Async<bool>
Expand Down
23 changes: 22 additions & 1 deletion src/fsharp/symbols/Symbols.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1844,6 +1844,23 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
prefix + x.LogicalName
with _ -> "??"

member x.FormatLayout (denv:FSharpDisplayContext) =
match x.IsMember, d with
| true, V v ->
NicePrint.prettyLayoutOfValOrMemberNoInst { (denv.Contents cenv.g) with showMemberContainers=true } v.Deref
| _,_ ->
checkIsResolved()
let ty =
match d with
| E e -> e.GetDelegateType(cenv.amap, range0)
| P p -> p.GetPropertyType(cenv.amap, range0)
| M m | C m ->
let rty = m.GetFSharpReturnTy(cenv.amap, range0, m.FormalMethodInst)
let argtysl = m.GetParamTypes(cenv.amap, range0, m.FormalMethodInst)
mkIteratedFunTy (List.map (mkRefTupledTy cenv.g) argtysl) rty
| V v -> v.TauType
NicePrint.prettyLayoutOfTypeNoCx (denv.Contents cenv.g) ty


and FSharpType(cenv, typ:TType) =

Expand Down Expand Up @@ -1989,7 +2006,11 @@ and FSharpType(cenv, typ:TType) =

member x.Format(denv: FSharpDisplayContext) =
protect <| fun () ->
NicePrint.prettyStringOfTyNoCx (denv.Contents cenv.g) typ
NicePrint.prettyStringOfTyNoCx (denv.Contents cenv.g) typ

member x.FormatLayout(denv: FSharpDisplayContext) =
protect <| fun () ->
NicePrint.prettyLayoutOfTypeNoCx (denv.Contents cenv.g) typ

override x.ToString() =
protect <| fun () ->
Expand Down
6 changes: 6 additions & 0 deletions src/fsharp/symbols/Symbols.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,9 @@ and [<Class>] public FSharpMemberOrFunctionOrValue =

/// Indicates if this is a constructor.
member IsConstructor : bool

/// Format the type using the rules of the given display context
member FormatLayout : context: FSharpDisplayContext -> Layout


/// A subtype of FSharpSymbol that represents a parameter
Expand Down Expand Up @@ -931,6 +934,9 @@ and [<Class>] public FSharpType =
/// Format the type using the rules of the given display context
member Format : context: FSharpDisplayContext -> string

/// Format the type using the rules of the given display context
member FormatLayout : context: FSharpDisplayContext -> Layout

/// Instantiate generic type parameters in a type
member Instantiate : (FSharpGenericParameter * FSharpType) list -> FSharpType

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,9 @@
<Name>FSharp.Compiler.Private</Name>
<Project>{2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}</Project>
</ProjectReference>
<ProjectReference Include="..\FSharp.Core\FSharp.Core.fsproj">
<ProjectReference Include="$(FSharpSourcesRoot)\fsharp\FSharp.Core\FSharp.Core.fsproj">
<Project>{DED3BBD7-53F4-428A-8C9F-27968E768605}</Project>
<Name>FSharp.Core</Name>
<Project>{ded3bbd7-53f4-428a-8c9f-27968e768605}</Project>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(FSharpSourcesRoot)\FSharpSource.targets" />
Expand Down
2 changes: 1 addition & 1 deletion tests/fsharp/packages.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Net.Compilers" version="2.4.0" />
<package id="Microsoft.Net.Compilers" version="2.7.0" />
<package id="NUnit3TestAdapter" version="3.7.0" targetFramework="net45" />
<package id="runtime.win-x64.Microsoft.NETCore.ILDAsm" version="2.0.3" />
<package id="runtime.win-x86.Microsoft.NETCore.ILDAsm" version="2.0.3" />
Expand Down
2 changes: 1 addition & 1 deletion tests/fsharp/test-framework.fs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ let config configurationName envVars =
let fsi_flags = "-r:System.Core.dll --nowarn:20 --define:INTERACTIVE --maxerrors:1 --abortonerror"
let Is64BitOperatingSystem = WindowsPlatform.Is64BitOperatingSystem envVars
let architectureMoniker = if Is64BitOperatingSystem then "x64" else "x86"
let CSC = requireFile (packagesDir ++ "Microsoft.Net.Compilers.2.4.0" ++ "tools" ++ "csc.exe")
let CSC = requireFile (packagesDir ++ "Microsoft.Net.Compilers.2.7.0" ++ "tools" ++ "csc.exe")
let ILDASM = requireFile (packagesDir ++ ("runtime.win-" + architectureMoniker + ".Microsoft.NETCore.ILDAsm.2.0.3") ++ "runtimes" ++ ("win-" + architectureMoniker) ++ "native" ++ "ildasm.exe")
let coreclrdll = requireFile (packagesDir ++ ("runtime.win-" + architectureMoniker + ".Microsoft.NETCore.Runtime.CoreCLR.2.0.3") ++ "runtimes" ++ ("win-" + architectureMoniker) ++ "native" ++ "coreclr.dll")
let PEVERIFY = requireFile (SCRIPT_ROOT ++ ".." ++ "fsharpqa" ++ "testenv" ++ "src" ++ "PEVerify" ++ "bin" ++ configurationName ++ "net46" ++ "PEVerify.exe")
Expand Down
6 changes: 2 additions & 4 deletions tests/fsharpqa/Source/Import/AccessibilityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ public class Accessibility
private int Private { get; set; }
protected int Protected { get; set; }
internal int Internal { get; set; }
// Note: accessibility was modified using dnspy
public int FamOrAssembly { get; set; }
// Note: accessibility was modified using dnspy
public int FamAndAssembly { get; set; }
protected internal int FamOrAssembly { get; set; }
private protected int FamAndAssembly { get; set; }
}

Binary file removed tests/fsharpqa/Source/Import/AccessibilityTests.dll
Binary file not shown.
10 changes: 5 additions & 5 deletions tests/fsharpqa/Source/Import/env.lst
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ NOMONO SOURCE=reference2.fsx SCFLAGS="--nologo -r:reference1.dll" PRECMD="\$FSC_
###
### F# can consume FamOrAssembly and FamAndAssembly in combination with IVT
###
SOURCE=FamAndAssembly.fs SCFLAGS="-a -r:AccessibilityTests.dll" # FamAndAssembly.fs
SOURCE=FamAndAssembly.fs SCFLAGS="-a -r:AccessibilityTests.dll" PRECMD="\$CSC_PIPE /debug /target:library /langversion:latest AccessibilityTests.cs" # FamAndAssembly.fs
### See issue https://github.com/Microsoft/visualfsharp/issues/2496
### SOURCE=FamOrAssembly.fs SCFLAGS="-a -r:AccessibilityTests.dll" # FamOrAssembly.fs
SOURCE=FamAndAssembly_NoIVT.fs SCFLAGS="-a -r:AccessibilityTests.dll" # FamAndAssembly_NoIVT.fs
### SOURCE=FamOrAssembly_NoIVT.fs SCFLAGS="-a -r:AccessibilityTests.dll" # FamOrAssembly_NoIVT.fs
### SOURCE=FamOrAssembly.fs SCFLAGS="-a -r:AccessibilityTests.dll" PRECMD="\$CSC_PIPE /debug /target:library /langversion:latest AccessibilityTests.cs" # FamOrAssembly.fs
SOURCE=FamAndAssembly_NoIVT.fs SCFLAGS="-a -r:AccessibilityTests.dll" PRECMD="\$CSC_PIPE /debug /target:library /langversion:latest AccessibilityTests.cs" # FamAndAssembly_NoIVT.fs
### SOURCE=FamOrAssembly_NoIVT.fs SCFLAGS="-a -r:AccessibilityTests.dll" PRECMD="\$CSC_PIPE /debug /target:library /langversion:latest AccessibilityTests.cs" # FamOrAssembly_NoIVT.fs

###
### Iterate over BCL collections
Expand All @@ -100,4 +100,4 @@ NOMONO SOURCE=reference2.fsx SCFLAGS="--nologo -r:reference1.dll" PRECMD="\$FSC_


SOURCE=ReferenceExe01.fsx PRECMD="\$FSC_PIPE ReferenceExe.fs" # ReferenceExe01.fsx
SOURCE=LineDirectiveFromCSharp.fs PRECMD="\$CSC_PIPE /t:library LineDirectiveLib.cs" SCFLAGS="-r:LineDirectiveLib.dll" # LineDirectiveFromCSharp.fs
SOURCE=LineDirectiveFromCSharp.fs PRECMD="\$CSC_PIPE /t:library LineDirectiveLib.cs" SCFLAGS="-r:LineDirectiveLib.dll" # LineDirectiveFromCSharp.fs
Loading