Skip to content

Commit 7a54bab

Browse files
authored
Cross-build to .NET 7.0 and 6.0 (#24)
Previously, scip-dotnet was only built against net7.0. Given that 6.0 is an LTS version it makes sense to cross-build it against net6.0 as well. There are minor differences in the snapshots between net6.0 and net7.0 (some occurrences are missing in net6.0) so I figured it was easiest to have two separate snapshot directories. Thankfully, you can run the tests for net6.0 and net7.0 with one `dotnet test` command. Use `dotnet test --framework net7.0` if you only want to run the tests for a single framework.
1 parent dec7570 commit 7a54bab

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2349
-7
lines changed

ScipDotnet.Tests/ScipDotnet.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFrameworks>net7.0;net6.0</TargetFrameworks>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<IsPackable>false</IsPackable>

ScipDotnet.Tests/SnapshotTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ public void Snapshot(string inputDirectory)
2121
var indexFile = IndexDirectory(inputDirectory);
2222
var indexBytes = File.ReadAllBytes(indexFile);
2323
var index = Index.Parser.ParseFrom(indexBytes);
24-
var snapshots = index.Documents.ToDictionary(document => document.RelativePath,
25-
document => FormatDocument(index, document));
24+
var snapshots = index.Documents
25+
.DistinctBy(document => document.RelativePath)
26+
.ToDictionary(document => document.RelativePath, document => FormatDocument(index, document));
2627
var outputDirectory =
27-
Path.GetFullPath(Path.Join(inputDirectory, "../../", "output", Path.GetFileName(inputDirectory)));
28+
Path.GetFullPath(Path.Join(inputDirectory, "../../", $"output-net{Environment.Version.Major}.0", Path.GetFileName(inputDirectory)));
2829
var isUpdateSnapshots = Environment.GetEnvironmentVariable("SCIP_UPDATE_SNAPSHOTS") != null;
2930
if (isUpdateSnapshots)
3031
{
@@ -140,8 +141,9 @@ private static string[] ListSnapshotInputDirectories()
140141
private static string IndexDirectory(string directory)
141142
{
142143
var include = Environment.GetEnvironmentVariable("SCIP_INCLUDE");
144+
var framework = $"net{Environment.Version.Major}.0";
143145
var includeOption = include != null ? $" --include {include}" : "";
144-
var arguments = $"run --project ScipDotnet -- index --working-directory {directory}{includeOption}";
146+
var arguments = $"run --project ScipDotnet --framework {framework} -- index --working-directory {directory}{includeOption}";
145147
var process = new Process()
146148
{
147149
StartInfo = new ProcessStartInfo()

ScipDotnet/ScipDotnet.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PackageLicenseFile>LICENSE</PackageLicenseFile>
99
<PackageReadmeFile>readme.md</PackageReadmeFile>
1010
<PackageType>DotnetTool</PackageType>
11-
<TargetFramework>net7.0</TargetFramework>
11+
<TargetFrameworks>net7.0;net6.0</TargetFrameworks>
1212
<PackAsTool>true</PackAsTool>
1313
<AssemblyName>scip-dotnet</AssemblyName>
1414
<RepositoryUrl>https://github.com/sourcegraph/scip-dotnet</RepositoryUrl>

snapshots/input/syntax/Main/Main.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFrameworks>net7.0;net6.0</TargetFrameworks>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
<LangVersion>preview</LangVersion>
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
3+
namespace Main;
4+
// ^^^^ reference scip-dotnet nuget . . Main/
5+
6+
[SuppressMessage("ReSharper", "all")]
7+
public class Classes
8+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#
9+
// documentation ```cs\nclass Classes\n```
10+
{
11+
public string Name;
12+
// ^^^^ definition scip-dotnet nuget . . Main/Classes#Name.
13+
// documentation ```cs\npublic string Classes.Name\n```
14+
public const int IntConstant = 1;
15+
// ^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#IntConstant.
16+
// documentation ```cs\npublic const int Classes.IntConstant\n```
17+
public const string StringConstant = $"hello";
18+
// ^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#StringConstant.
19+
// documentation ```cs\npublic const string Classes.StringConstant\n```
20+
21+
public Classes(int name)
22+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#`.ctor`().
23+
// documentation ```cs\npublic Classes.Classes(int name)\n```
24+
// ^^^^ definition scip-dotnet nuget . . Main/Classes#`.ctor`().(name)
25+
// documentation ```cs\nint name\n```
26+
{
27+
Name = "name";
28+
// ^^^^ reference scip-dotnet nuget . . Main/Classes#Name.
29+
}
30+
31+
public Classes(string name) => Name = name;
32+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#`.ctor`(+1).
33+
// documentation ```cs\npublic Classes.Classes(string name)\n```
34+
// ^^^^ definition scip-dotnet nuget . . Main/Classes#`.ctor`(+1).(name)
35+
// documentation ```cs\nstring name\n```
36+
// ^^^^ reference scip-dotnet nuget . . Main/Classes#Name.
37+
// ^^^^ reference scip-dotnet nuget . . Main/Classes#`.ctor`(+1).(name)
38+
39+
~Classes()
40+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#Finalize().
41+
// documentation ```cs\nprotected Classes.~Classes()\n```
42+
{
43+
Console.WriteLine(42);
44+
}
45+
46+
47+
public class ObjectClass : object, SomeInterface
48+
// ^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#ObjectClass#
49+
// documentation ```cs\nclass ObjectClass\n```
50+
// relationship implementation scip-dotnet nuget . . Main/SomeInterface#
51+
// ^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/SomeInterface#
52+
{
53+
}
54+
55+
public partial class PartialClass
56+
// ^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#PartialClass#
57+
// documentation ```cs\nclass PartialClass\n```
58+
{
59+
}
60+
61+
class TypeParameterClass<T>
62+
// ^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#TypeParameterClass#
63+
// documentation ```cs\nclass TypeParameterClass<T>\n```
64+
{
65+
}
66+
67+
internal class InternalMultipleTypeParametersClass<T1, T2>
68+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#InternalMultipleTypeParametersClass#
69+
// documentation ```cs\nclass InternalMultipleTypeParametersClass<T1, T2>\n```
70+
{
71+
}
72+
73+
interface ICovariantContravariant<in T1, out T2>
74+
// ^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#ICovariantContravariant#
75+
// documentation ```cs\ninterface ICovariantContravariant<in T1, out T2>\n```
76+
{
77+
public void Method1(T1 t1)
78+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#ICovariantContravariant#Method1().
79+
// documentation ```cs\nvoid ICovariantContravariant<in T1, out T2>.Method1(T1 t1)\n```
80+
// ^^ reference scip-dotnet nuget . . Main/Classes#ICovariantContravariant#[T1]
81+
// ^^ definition scip-dotnet nuget . . Main/Classes#ICovariantContravariant#Method1().(t1)
82+
// documentation ```cs\nT1 t1\n```
83+
{
84+
Console.WriteLine(t1);
85+
// ^^ reference scip-dotnet nuget . . Main/Classes#ICovariantContravariant#Method1().(t1)
86+
}
87+
88+
public T2? Method2()
89+
// ^^ reference scip-dotnet nuget . . Main/Classes#ICovariantContravariant#[T2]
90+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Classes#ICovariantContravariant#Method2().
91+
// documentation ```cs\nT2? ICovariantContravariant<in T1, out T2>.Method2()\n```
92+
{
93+
return default(T2);
94+
// ^^ reference scip-dotnet nuget . . Main/Classes#ICovariantContravariant#[T2]
95+
}
96+
}
97+
98+
public class StructConstraintClass<T> where T : struct
99+
// ^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#StructConstraintClass#
100+
// documentation ```cs\nclass StructConstraintClass<T> where T : struct\n```
101+
// ^ reference scip-dotnet nuget . . Main/Classes#StructConstraintClass#[T]
102+
{
103+
}
104+
105+
public class UnmanagedConstraintClass<T> where T : unmanaged
106+
// ^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#UnmanagedConstraintClass#
107+
// documentation ```cs\nclass UnmanagedConstraintClass<T> where T : unmanaged\n```
108+
// ^ reference scip-dotnet nuget . . Main/Classes#UnmanagedConstraintClass#[T]
109+
{
110+
}
111+
112+
public class ClassConstraintClass<T> where T : class
113+
// ^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#ClassConstraintClass#
114+
// documentation ```cs\nclass ClassConstraintClass<T> where T : class\n```
115+
// ^ reference scip-dotnet nuget . . Main/Classes#ClassConstraintClass#[T]
116+
{
117+
}
118+
119+
public class NonNullableConstraintClass<T> where T : notnull
120+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#NonNullableConstraintClass#
121+
// documentation ```cs\nclass NonNullableConstraintClass<T> where T : notnull\n```
122+
// ^ reference scip-dotnet nuget . . Main/Classes#NonNullableConstraintClass#[T]
123+
{
124+
}
125+
126+
public class NewConstraintClass<T> where T : new()
127+
// ^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#NewConstraintClass#
128+
// documentation ```cs\nclass NewConstraintClass<T> where T : new()\n```
129+
// ^ reference scip-dotnet nuget . . Main/Classes#NewConstraintClass#[T]
130+
{
131+
}
132+
133+
public class TypeParameterConstraintClass<T> where T : SomeInterface
134+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#TypeParameterConstraintClass#
135+
// documentation ```cs\nclass TypeParameterConstraintClass<T> where T : SomeInterface\n```
136+
// ^ reference scip-dotnet nuget . . Main/Classes#TypeParameterConstraintClass#[T]
137+
// ^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/SomeInterface#
138+
{
139+
}
140+
141+
private class MultipleTypeParameterConstraintsClass<T1, T2> where T1 : SomeInterface, SomeInterface2, new()
142+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#MultipleTypeParameterConstraintsClass#
143+
// documentation ```cs\nclass MultipleTypeParameterConstraintsClass<T1, T2> where T1 : SomeInterface, SomeInterface2, new() where T2 : SomeInterface2\n```
144+
// ^^ reference scip-dotnet nuget . . Main/Classes#MultipleTypeParameterConstraintsClass#[T1]
145+
// ^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/SomeInterface#
146+
// ^^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/SomeInterface2#
147+
where T2 : SomeInterface2
148+
// ^^ reference scip-dotnet nuget . . Main/Classes#MultipleTypeParameterConstraintsClass#[T2]
149+
// ^^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/SomeInterface2#
150+
{
151+
}
152+
153+
class IndexClass
154+
// ^^^^^^^^^^ definition scip-dotnet nuget . . Main/Classes#IndexClass#
155+
// documentation ```cs\nclass IndexClass\n```
156+
{
157+
private bool a;
158+
// ^ definition scip-dotnet nuget . . Main/Classes#IndexClass#a.
159+
// documentation ```cs\nprivate bool IndexClass.a\n```
160+
161+
public bool this[int index]
162+
// ^^^^^ definition scip-dotnet nuget . . Main/Classes#IndexClass#`this[]`.(index)
163+
// documentation ```cs\nint index\n```
164+
{
165+
get { return a; }
166+
// ^ reference scip-dotnet nuget . . Main/Classes#IndexClass#a.
167+
set { a = value; }
168+
// ^ reference scip-dotnet nuget . . Main/Classes#IndexClass#a.
169+
// ^^^^^ reference scip-dotnet nuget . . Main/Classes#IndexClass#set_Item().(value)
170+
}
171+
}
172+
173+
}
174+
175+
public interface SomeInterface
176+
// ^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/SomeInterface#
177+
// documentation ```cs\ninterface SomeInterface\n```
178+
{
179+
}
180+
181+
internal interface SomeInterface2
182+
// ^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/SomeInterface2#
183+
// documentation ```cs\ninterface SomeInterface2\n```
184+
{
185+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
3+
namespace Main;
4+
// ^^^^ reference scip-dotnet nuget . . Main/
5+
6+
[SuppressMessage("ReSharper", "all")]
7+
public class Enums
8+
// ^^^^^ definition scip-dotnet nuget . . Main/Enums#
9+
// documentation ```cs\nclass Enums\n```
10+
{
11+
enum EnumWithIntValues
12+
// ^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithIntValues#
13+
// documentation ```cs\nenum EnumWithIntValues\n```
14+
{
15+
Ten = 10,
16+
// ^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithIntValues#Ten.
17+
// documentation ```cs\nEnumWithIntValues.Ten\n```
18+
Twenty = 20
19+
// ^^^^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithIntValues#Twenty.
20+
// documentation ```cs\nEnumWithIntValues.Twenty\n```
21+
}
22+
23+
enum EnumWithByteValues
24+
// ^^^^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithByteValues#
25+
// documentation ```cs\nenum EnumWithByteValues\n```
26+
{
27+
Five = 0x05,
28+
// ^^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithByteValues#Five.
29+
// documentation ```cs\nEnumWithByteValues.Five\n```
30+
Fifteen = 0x0F
31+
// ^^^^^^^ definition scip-dotnet nuget . . Main/Enums#EnumWithByteValues#Fifteen.
32+
// documentation ```cs\nEnumWithByteValues.Fifteen\n```
33+
}
34+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
3+
namespace Main;
4+
// ^^^^ reference scip-dotnet nuget . . Main/
5+
6+
[SuppressMessage("ReSharper", "all")]
7+
public class Events
8+
// ^^^^^^ definition scip-dotnet nuget . . Main/Events#
9+
// documentation ```cs\nclass Events\n```
10+
{
11+
public event EventHandler<int> Event1
12+
// ^^^^^^ definition scip-dotnet nuget . . Main/Events#Event1#
13+
// documentation ```cs\npublic event EventHandler<int> Events.Event1\n```
14+
{
15+
add { }
16+
remove { }
17+
}
18+
19+
public event EventHandler Event2
20+
// ^^^^^^ definition scip-dotnet nuget . . Main/Events#Event2#
21+
// documentation ```cs\npublic event EventHandler Events.Event2\n```
22+
{
23+
add => addSomething();
24+
// ^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/Events#addSomething().
25+
remove => removeSomething();
26+
// ^^^^^^^^^^^^^^^ reference scip-dotnet nuget . . Main/Events#removeSomething().
27+
}
28+
29+
private void removeSomething()
30+
// ^^^^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Events#removeSomething().
31+
// documentation ```cs\nprivate void Events.removeSomething()\n```
32+
{
33+
throw new NotImplementedException();
34+
}
35+
36+
private void addSomething()
37+
// ^^^^^^^^^^^^ definition scip-dotnet nuget . . Main/Events#addSomething().
38+
// documentation ```cs\nprivate void Events.addSomething()\n```
39+
{
40+
throw new NotImplementedException();
41+
}
42+
}

0 commit comments

Comments
 (0)