internal bool IsFeatureEnabled(MessageID feature) { switch (feature) { case MessageID.IDS_FeatureBinaryLiteral: case MessageID.IDS_FeatureDigitSeparator: case MessageID.IDS_FeatureLocalFunctions: case MessageID.IDS_FeatureRefLocalsReturns: case MessageID.IDS_FeaturePatternMatching: case MessageID.IDS_FeatureTuples: case MessageID.IDS_FeatureReplace: // in "demo" mode enable proposed new C# 7 language features. if (PreprocessorSymbols.Contains("__DEMO__")) { return(true); } break; default: break; } string featureFlag = feature.RequiredFeature(); if (featureFlag != null) { return(Features.ContainsKey(featureFlag)); } LanguageVersion availableVersion = LanguageVersion; LanguageVersion requiredVersion = feature.RequiredVersion(); return(availableVersion >= requiredVersion); }
protected PreprocessorSymbolList CreatePreprocessorSymbolList() { var preprocessorSymbolList = new PreprocessorSymbolList(); if (PreprocessorSymbols != null) { foreach (var s in PreprocessorSymbols.Split(_preprocessorSymbolSeparators, StringSplitOptions.RemoveEmptyEntries)) { var s2 = s.Trim(); if (s2.Length > 0) { preprocessorSymbolList.Add(s2); } } } return(preprocessorSymbolList); }