public CSharpParseOptions( LanguageVersion languageVersion = LanguageVersion.Latest, DocumentationMode documentationMode = DocumentationMode.Parse, SourceCodeKind kind = SourceCodeKind.Regular, IEnumerable <string> preprocessorSymbols = null) : this(languageVersion.MapLatestToVersion(), documentationMode, kind, preprocessorSymbols.ToImmutableArrayOrEmpty()) { // We test the mapped value, LanguageVersion, rather than the parameter, languageVersion, // which has not had "Latest" mapped to the latest version yet. if (!LanguageVersion.IsValid()) { throw new ArgumentOutOfRangeException(nameof(languageVersion)); } if (!kind.IsValid()) { throw new ArgumentOutOfRangeException(nameof(kind)); } if (preprocessorSymbols != null) { foreach (var preprocessorSymbol in preprocessorSymbols) { if (!SyntaxFacts.IsValidIdentifier(preprocessorSymbol)) { throw new ArgumentException("preprocessorSymbols"); } } } }
public CSharpParseOptions WithLanguageVersion(LanguageVersion version) { version = version.MapLatestToVersion(); if (version == this.LanguageVersion) { return(this); } if (!version.IsValid()) { throw new ArgumentOutOfRangeException(nameof(version)); } return(new CSharpParseOptions(this) { LanguageVersion = version }); }