Skip to content

Commit f8faee0

Browse files
authored
respect LangVersion for preview features (#219)
1 parent c4a0cf6 commit f8faee0

File tree

10 files changed

+145
-1
lines changed

10 files changed

+145
-1
lines changed

src/Consume/Consume.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ void UsePreviewFeature()
111111
{
112112
}
113113

114+
#if LangVersion13
115+
114116
[OverloadResolutionPriority(1)]
115117
void Method(int x)
116118
{
@@ -126,7 +128,10 @@ void Method(object x)
126128
{
127129
}
128130

131+
#endif
132+
129133
#if FeatureMemory
134+
130135
void CollectionBuilderAttribute()
131136
{
132137
MyCollection myCollection = [1, 2, 3, 4, 5];
@@ -140,9 +145,11 @@ class MyCollection(ReadOnlySpan<int> initValues)
140145

141146
public static MyCollection Create(ReadOnlySpan<int> values) => new(values);
142147
}
148+
143149
#endif
144150

145151
#if FeatureValueTuple
152+
146153
void Ranges()
147154
{
148155
var range = "value"[1..];
@@ -154,6 +161,7 @@ void Ranges()
154161
// "value2"
155162
// }[..1];
156163
}
164+
157165
#endif
158166

159167
#endregion
@@ -326,6 +334,7 @@ void Random_Methods()
326334
}
327335

328336
#if FeatureMemory
337+
329338
void ReadOnlySpan_Methods()
330339
{
331340
var readOnlySpan = "value".AsSpan();
@@ -340,18 +349,22 @@ void ReadOnlySpan_Methods()
340349
result = readOnlySpan.StartsWith("value", StringComparison.Ordinal);
341350
var split = readOnlySpan.Split('a');
342351
split = readOnlySpan.Split("a".AsSpan());
352+
#if LangVersion13
343353
split = readOnlySpan.SplitAny('a');
344354
split = readOnlySpan.SplitAny("a".AsSpan());
355+
#endif
345356
}
346357

347358
#endif
348359

349360
#if FeatureMemory
361+
350362
void Regex_Methods()
351363
{
352364
var regex = new Regex("result");
353365
regex.IsMatch("value".AsSpan());
354366
}
367+
355368
#endif
356369

357370
void SByte_Methods()

src/ConsumeCs12/ConsumeCs12.csproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<NoWarn>$(NoWarn);PolyfillTargetsForNuget</NoWarn>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<LangVersion>12.0</LangVersion>
6+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net461;net462;net47;net471;net472;net48;net481;net6.0-windows</TargetFrameworks>
7+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.Memory" Condition="$(TargetFramework) != '.NETStandard' or $(TargetFrameworkIdentifier) == '.NETFramework' or $(TargetFramework.StartsWith('netcoreapp'))" />
11+
<PackageReference Include="System.ValueTuple" Condition="$(TargetFramework.StartsWith('net46'))" />
12+
<PackageReference Include="System.Net.Http" Condition="$(TargetFramework.StartsWith('net4'))" />
13+
<PackageReference Include="System.Threading.Tasks.Extensions" Condition="$(TargetFramework) == 'netstandard2.0' or $(TargetFramework) == 'netcoreapp2.0' or $(TargetFrameworkIdentifier) == '.NETFramework'" />
14+
<Compile Include="..\Consume\*.cs" />
15+
</ItemGroup>
16+
<Import Project="$(SolutionDir)\Polyfill\Polyfill.targets" />
17+
<Import Project="$(SolutionDir)\TestIncludes.targets" />
18+
</Project>

src/ConsumeCs13/ConsumeCs13.csproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<NoWarn>$(NoWarn);PolyfillTargetsForNuget</NoWarn>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<LangVersion>13.0</LangVersion>
6+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net461;net462;net47;net471;net472;net48;net481;net6.0-windows</TargetFrameworks>
7+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.Memory" Condition="$(TargetFramework) != '.NETStandard' or $(TargetFrameworkIdentifier) == '.NETFramework' or $(TargetFramework.StartsWith('netcoreapp'))" />
11+
<PackageReference Include="System.ValueTuple" Condition="$(TargetFramework.StartsWith('net46'))" />
12+
<PackageReference Include="System.Net.Http" Condition="$(TargetFramework.StartsWith('net4'))" />
13+
<PackageReference Include="System.Threading.Tasks.Extensions" Condition="$(TargetFramework) == 'netstandard2.0' or $(TargetFramework) == 'netcoreapp2.0' or $(TargetFrameworkIdentifier) == '.NETFramework'" />
14+
<Compile Include="..\Consume\*.cs" />
15+
</ItemGroup>
16+
<Import Project="$(SolutionDir)\Polyfill\Polyfill.targets" />
17+
<Import Project="$(SolutionDir)\TestIncludes.targets" />
18+
</Project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<NoWarn>$(NoWarn);PolyfillTargetsForNuget</NoWarn>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<LangVersion>default</LangVersion>
6+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net461;net462;net47;net471;net472;net48;net481;net6.0-windows</TargetFrameworks>
7+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.Memory" Condition="$(TargetFramework) != '.NETStandard' or $(TargetFrameworkIdentifier) == '.NETFramework' or $(TargetFramework.StartsWith('netcoreapp'))" />
11+
<PackageReference Include="System.ValueTuple" Condition="$(TargetFramework.StartsWith('net46'))" />
12+
<PackageReference Include="System.Net.Http" Condition="$(TargetFramework.StartsWith('net4'))" />
13+
<PackageReference Include="System.Threading.Tasks.Extensions" Condition="$(TargetFramework) == 'netstandard2.0' or $(TargetFramework) == 'netcoreapp2.0' or $(TargetFrameworkIdentifier) == '.NETFramework'" />
14+
<Compile Include="..\Consume\*.cs" />
15+
</ItemGroup>
16+
<Import Project="$(SolutionDir)\Polyfill\Polyfill.targets" />
17+
<Import Project="$(SolutionDir)\TestIncludes.targets" />
18+
</Project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<NoWarn>$(NoWarn);PolyfillTargetsForNuget</NoWarn>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<LangVersion>latest</LangVersion>
6+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net461;net462;net47;net471;net472;net48;net481;net6.0-windows</TargetFrameworks>
7+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.Memory" Condition="$(TargetFramework) != '.NETStandard' or $(TargetFrameworkIdentifier) == '.NETFramework' or $(TargetFramework.StartsWith('netcoreapp'))" />
11+
<PackageReference Include="System.ValueTuple" Condition="$(TargetFramework.StartsWith('net46'))" />
12+
<PackageReference Include="System.Net.Http" Condition="$(TargetFramework.StartsWith('net4'))" />
13+
<PackageReference Include="System.Threading.Tasks.Extensions" Condition="$(TargetFramework) == 'netstandard2.0' or $(TargetFramework) == 'netcoreapp2.0' or $(TargetFrameworkIdentifier) == '.NETFramework'" />
14+
<Compile Include="..\Consume\*.cs" />
15+
</ItemGroup>
16+
<Import Project="$(SolutionDir)\Polyfill\Polyfill.targets" />
17+
<Import Project="$(SolutionDir)\TestIncludes.targets" />
18+
</Project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<NoWarn>$(NoWarn);PolyfillTargetsForNuget</NoWarn>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<LangVersion>latestMajor</LangVersion>
6+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net461;net462;net47;net471;net472;net48;net481;net6.0-windows</TargetFrameworks>
7+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.Memory" Condition="$(TargetFramework) != '.NETStandard' or $(TargetFrameworkIdentifier) == '.NETFramework' or $(TargetFramework.StartsWith('netcoreapp'))" />
11+
<PackageReference Include="System.ValueTuple" Condition="$(TargetFramework.StartsWith('net46'))" />
12+
<PackageReference Include="System.Net.Http" Condition="$(TargetFramework.StartsWith('net4'))" />
13+
<PackageReference Include="System.Threading.Tasks.Extensions" Condition="$(TargetFramework) == 'netstandard2.0' or $(TargetFramework) == 'netcoreapp2.0' or $(TargetFrameworkIdentifier) == '.NETFramework'" />
14+
<Compile Include="..\Consume\*.cs" />
15+
</ItemGroup>
16+
<Import Project="$(SolutionDir)\Polyfill\Polyfill.targets" />
17+
<Import Project="$(SolutionDir)\TestIncludes.targets" />
18+
</Project>

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
33
<PropertyGroup>
4-
<Version>6.6.1</Version>
4+
<Version>6.6.2</Version>
55
<AssemblyVersion>1.0.0</AssemblyVersion>
66
<PackageTags>Polyfill</PackageTags>
77
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>

src/Polyfill.sln

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TargetFrameworkUsage", "Tar
4343
EndProject
4444
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeMemoryWithNoTask", "ConsumeMemoryWithNoTask\ConsumeMemoryWithNoTask.csproj", "{1BDDA7F0-0D45-418C-B3DB-BBA39C29FD77}"
4545
EndProject
46+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeCs12", "ConsumeCs12\ConsumeCs12.csproj", "{4ACF4760-B3C5-4D07-9D92-2B8225BA8881}"
47+
EndProject
48+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeCs13", "ConsumeCs13\ConsumeCs13.csproj", "{EE99F818-0D49-434F-B787-348CA34051EF}"
49+
EndProject
50+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeCsLatest", "ConsumeCsLatest\ConsumeCsLatest.csproj", "{684570FB-7049-44F0-9DCC-32F73F242694}"
51+
EndProject
52+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeCsLatestMajor", "ConsumeCsLatestMajor\ConsumeCsLatestMajor.csproj", "{9BB64345-DE4F-4396-9320-AAA712D7E3CE}"
53+
EndProject
54+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsumeCsDefault", "ConsumeCsDefault\ConsumeCsDefault.csproj", "{86AA1F8D-4081-4D31-812E-866C0951415D}"
55+
EndProject
4656
Global
4757
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4858
Debug|Any CPU = Debug|Any CPU
@@ -96,6 +106,26 @@ Global
96106
{1BDDA7F0-0D45-418C-B3DB-BBA39C29FD77}.Debug|Any CPU.Build.0 = Debug|Any CPU
97107
{1BDDA7F0-0D45-418C-B3DB-BBA39C29FD77}.Release|Any CPU.ActiveCfg = Release|Any CPU
98108
{1BDDA7F0-0D45-418C-B3DB-BBA39C29FD77}.Release|Any CPU.Build.0 = Release|Any CPU
109+
{4ACF4760-B3C5-4D07-9D92-2B8225BA8881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
110+
{4ACF4760-B3C5-4D07-9D92-2B8225BA8881}.Debug|Any CPU.Build.0 = Debug|Any CPU
111+
{4ACF4760-B3C5-4D07-9D92-2B8225BA8881}.Release|Any CPU.ActiveCfg = Release|Any CPU
112+
{4ACF4760-B3C5-4D07-9D92-2B8225BA8881}.Release|Any CPU.Build.0 = Release|Any CPU
113+
{EE99F818-0D49-434F-B787-348CA34051EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
114+
{EE99F818-0D49-434F-B787-348CA34051EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
115+
{EE99F818-0D49-434F-B787-348CA34051EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
116+
{EE99F818-0D49-434F-B787-348CA34051EF}.Release|Any CPU.Build.0 = Release|Any CPU
117+
{684570FB-7049-44F0-9DCC-32F73F242694}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
118+
{684570FB-7049-44F0-9DCC-32F73F242694}.Debug|Any CPU.Build.0 = Debug|Any CPU
119+
{684570FB-7049-44F0-9DCC-32F73F242694}.Release|Any CPU.ActiveCfg = Release|Any CPU
120+
{684570FB-7049-44F0-9DCC-32F73F242694}.Release|Any CPU.Build.0 = Release|Any CPU
121+
{9BB64345-DE4F-4396-9320-AAA712D7E3CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
122+
{9BB64345-DE4F-4396-9320-AAA712D7E3CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
123+
{9BB64345-DE4F-4396-9320-AAA712D7E3CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
124+
{9BB64345-DE4F-4396-9320-AAA712D7E3CE}.Release|Any CPU.Build.0 = Release|Any CPU
125+
{86AA1F8D-4081-4D31-812E-866C0951415D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
126+
{86AA1F8D-4081-4D31-812E-866C0951415D}.Debug|Any CPU.Build.0 = Debug|Any CPU
127+
{86AA1F8D-4081-4D31-812E-866C0951415D}.Release|Any CPU.ActiveCfg = Release|Any CPU
128+
{86AA1F8D-4081-4D31-812E-866C0951415D}.Release|Any CPU.Build.0 = Release|Any CPU
99129
EndGlobalSection
100130
GlobalSection(SolutionProperties) = preSolution
101131
HideSolutionNode = FALSE

src/Polyfill/Polyfill.targets

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
<LowerFramework>$(TargetFramework.ToLower())</LowerFramework>
55
<LowerFrameworks>$(TargetFrameworks.ToLower())</LowerFrameworks>
66
</PropertyGroup>
7+
<PropertyGroup Condition="$([MSBuild]::VersionGreaterThanOrEquals($(SdkAnalysisLevel), '9'))">
8+
<DefineConstants Condition="$(LangVersion) == '13'">$(DefineConstants);LangVersion13</DefineConstants>
9+
<DefineConstants Condition="$(LangVersion) == 'latest'">$(DefineConstants);LangVersion13</DefineConstants>
10+
<DefineConstants Condition="$(LangVersion) == 'preview'">$(DefineConstants);LangVersion13</DefineConstants>
11+
<DefineConstants Condition="$(LangVersion) == 'default'">$(DefineConstants);LangVersion13</DefineConstants>
12+
<DefineConstants Condition="$(LangVersion) == 'latestMajor'">$(DefineConstants);LangVersion13</DefineConstants>
13+
</PropertyGroup>
714
<PropertyGroup Condition="$(AllowUnsafeBlocks) == 'true' ">
815
<DefineConstants>$(DefineConstants);AllowUnsafeBlocks</DefineConstants>
916
</PropertyGroup>

src/Polyfill/Polyfill_Memory_SpanSplit.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static SpanSplitEnumerator<T> Split<T>(this ReadOnlySpan<T> source, ReadO
4343
where T : IEquatable<T> =>
4444
new SpanSplitEnumerator<T>(source, separator, treatAsSingleSeparator: true);
4545

46+
#if LangVersion13
47+
4648
/// <summary>
4749
/// Returns a type that allows for enumeration of each element within a split span
4850
/// using any of the provided elements.
@@ -63,6 +65,8 @@ public static SpanSplitEnumerator<T> SplitAny<T>(this ReadOnlySpan<T> source, [U
6365
where T : IEquatable<T> =>
6466
new SpanSplitEnumerator<T>(source, separators);
6567

68+
#endif
69+
6670
#if NET8_0
6771

6872
/// <summary>

0 commit comments

Comments
 (0)