public void CreateMethod1() { MethodMacro m = null; Assert.True(MethodMacro.TryCreateFromDeclaration("m1", "(x) x + 2", out m)); Assert.Equal("m1", m.Name); }
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); }
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); }
public void CreateMethod2() { MethodMacro m = null; Assert.False(MethodMacro.TryCreateFromDeclaration("m1", "2", out m)); }