Exemplo n.º 1
0
        public void CreateMethod1()
        {
            MethodMacro m = null;

            Assert.True(MethodMacro.TryCreateFromDeclaration("m1", "(x) x + 2", out m));
            Assert.Equal("m1", m.Name);
        }
Exemplo n.º 2
0
        public void CreateMethod4()
        {
            MethodMacro m   = null;
            string      sig = "(x) \"foo\"#x           +    5";

            Assert.True(MethodMacro.TryCreateFromDeclaration("m1", sig, out m));
            Assert.Equal(sig, m.MethodSignature);
        }
Exemplo n.º 3
0
        public static IEnumerable <Macro> GetAllMacros(this INativeSymbolStorage storage)
        {
            var list = new List <Macro>();

            foreach (var name in storage.NativeNames.Where(x => x.Kind == NativeNameKind.Constant))
            {
                NativeConstant constant;
                if (!storage.TryGetGlobalSymbol(name, out constant))
                {
                    continue;
                }

                switch (constant.ConstantKind)
                {
                case ConstantKind.MacroMethod:
                {
                    var body = constant.Value.Expression;
                    if (body.Length > 1 && body[0] == '"' && body[body.Length - 1] == '"')
                    {
                        body = body.Substring(1, body.Length - 2);
                    }

                    MethodMacro method = null;
                    if (MethodMacro.TryCreateFromDeclaration(name.Name, body, out method))
                    {
                        list.Add(method);
                    }
                }
                break;

                case ConstantKind.Macro:
                    list.Add(new Macro(name.Name, constant.Value.Expression));
                    break;

                default:
                    Contract.ThrowInvalidEnumValue(constant.ConstantKind);
                    break;
                }
            }

            return(list);
        }
Exemplo n.º 4
0
        public void CreateMethod2()
        {
            MethodMacro m = null;

            Assert.False(MethodMacro.TryCreateFromDeclaration("m1", "2", out m));
        }