示例#1
0
        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);
        }
示例#2
0
        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);
        }