From f0b48aa72698ed0f5dca811b2fef25ce3e329779 Mon Sep 17 00:00:00 2001 From: Julien Couvreur Date: Wed, 17 Oct 2018 22:42:09 -0700 Subject: [PATCH] Add NullableReferenceTypes msbuild property (#30574) --- src/Compilers/Core/MSBuildTask/Csc.cs | 7 +++++++ .../MSBuildTask/Microsoft.CSharp.Core.targets | 1 + .../Core/MSBuildTaskTests/CscTests.cs | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/src/Compilers/Core/MSBuildTask/Csc.cs b/src/Compilers/Core/MSBuildTask/Csc.cs index f5d54196a15..823e2f024c5 100644 --- a/src/Compilers/Core/MSBuildTask/Csc.cs +++ b/src/Compilers/Core/MSBuildTask/Csc.cs @@ -143,6 +143,12 @@ public string WarningsNotAsErrors get { return (string)_store[nameof(WarningsNotAsErrors)]; } } + public bool NullableReferenceTypes + { + set { _store[nameof(NullableReferenceTypes)] = value; } + get { return (bool)_store[nameof(NullableReferenceTypes)]; } + } + #endregion #region Tool Members @@ -198,6 +204,7 @@ protected internal override void AddResponseFileCommands(CommandLineBuilderExten commandLine.AppendWhenTrue("/errorendlocation", _store, nameof(ErrorEndLocation)); commandLine.AppendSwitchIfNotNull("/preferreduilang:", PreferredUILang); commandLine.AppendPlusOrMinusSwitch("/highentropyva", _store, nameof(HighEntropyVA)); + commandLine.AppendPlusOrMinusSwitch("/nullable", _store, nameof(NullableReferenceTypes)); // If not design time build and the globalSessionGuid property was set then add a -globalsessionguid: bool designTime = false; diff --git a/src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets b/src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets index cc0ad1ea4bb..fe1bf6090da 100644 --- a/src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets +++ b/src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets @@ -88,6 +88,7 @@ NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" NoWin32Manifest="$(NoWin32Manifest)" + NullableReferenceTypes="$(NullableReferenceTypes)" Optimize="$(Optimize)" Deterministic="$(Deterministic)" PublicSign="$(PublicSign)" diff --git a/src/Compilers/Core/MSBuildTaskTests/CscTests.cs b/src/Compilers/Core/MSBuildTaskTests/CscTests.cs index 5048123ecfb..6e4c9ca70f5 100644 --- a/src/Compilers/Core/MSBuildTaskTests/CscTests.cs +++ b/src/Compilers/Core/MSBuildTaskTests/CscTests.cs @@ -332,6 +332,24 @@ public void RefOnly() Assert.Equal("/out:test.exe /refonly test.cs", csc.GenerateResponseFileContents()); } + [Fact] + public void NullableReferenceTypes_True() + { + var csc = new Csc(); + csc.Sources = MSBuildUtil.CreateTaskItems("test.cs"); + csc.NullableReferenceTypes = true; + Assert.Equal("/nullable+ /out:test.exe test.cs", csc.GenerateResponseFileContents()); + } + + [Fact] + public void NullableReferenceTypes_False() + { + var csc = new Csc(); + csc.Sources = MSBuildUtil.CreateTaskItems("test.cs"); + csc.NullableReferenceTypes = false; + Assert.Equal("/nullable- /out:test.exe test.cs", csc.GenerateResponseFileContents()); + } + [Fact] public void SharedCompilationId() { -- GitLab