public void SetupMetadata(CST.Global global) { NumWarnings = 0; NumErrors = 0; Global = global; if (tracerStream != null) { Tracer = new CST.CSTWriter(global, CST.WriterStyle.Debug, tracerStream); } Validity = new ValidityContext(this); GenericEnumeratorTypeConstructorRef = MkRef(Constants.GenericEnumeratorTypeConstructorName); JSContextRef = MkRef(Constants.JSContextName); JSObjectRef = MkRef(Constants.JSObjectName); JSPropertyRef = MkRef(Constants.JSPropertyName); JSExceptionRef = MkRef(Constants.JSExceptionName); GlobalMapping = new GlobalMapping(this); AttributeHelper = new AttributeHelper(this); InteropManager = new InteropManager(this); JSTHelpers = new JSTHelpers(this); InlinedMethods = new InlinedMethodCache(this); Traces = new Traces(this); }
public void Remainder(Traces traces) { var rootEnv = traces.Env.Global.Environment(); foreach (var assemblyDef in traces.Env.Global.Assemblies) { if (!traces.AssemblyToTrace.ContainsKey(assemblyDef.Name)) { AddAssembly(null, assemblyDef); } foreach (var typeDef in assemblyDef.Types) { if (!traces.TypeToTrace.ContainsKey(typeDef.QualifiedTypeName(Parent.Env.Global, assemblyDef))) { AddType(null, assemblyDef, typeDef); } foreach ( var methodDef in typeDef.Members.OfType <CST.MethodDef>().Where(m => m.IsUsed && m.Invalid == null)) { if ( !traces.MethodToTrace.ContainsKey (methodDef.QualifiedMemberName(Parent.Env.Global, assemblyDef, typeDef))) { AddMethod(null, assemblyDef, typeDef, methodDef); } } } } }
public Trace(Traces parent, string name, TraceFlavor flavor) { Parent = parent; Name = name; Flavor = flavor; AssemblyMap = new Map <CST.AssemblyName, AssemblyTrace>(); }
public void Remainder(Traces traces) { var rootEnv = traces.Env.Global.Environment(); foreach (var assemblyDef in traces.Env.Global.Assemblies) { if (!traces.AssemblyToTrace.ContainsKey(assemblyDef.Name)) AddAssembly(null, assemblyDef); foreach (var typeDef in assemblyDef.Types) { if (!traces.TypeToTrace.ContainsKey(typeDef.QualifiedTypeName(Parent.Env.Global, assemblyDef))) AddType(null, assemblyDef, typeDef); foreach ( var methodDef in typeDef.Members.OfType<CST.MethodDef>().Where(m => m.IsUsed && m.Invalid == null)) { if ( !traces.MethodToTrace.ContainsKey (methodDef.QualifiedMemberName(Parent.Env.Global, assemblyDef, typeDef))) AddMethod(null, assemblyDef, typeDef, methodDef); } } } }
public void Load(Traces traces, string traceFilename) { var prog = JST.Program.FromFile(traceFilename, true); foreach (var s in prog.Body.Body) { var ctxt = CompMsgContext.TraceFile(s.Loc); var ok = false; if (s.Flavor == JST.StatementFlavor.Comment) ok = true; else if (s.Flavor == JST.StatementFlavor.Expression) { var e = ((JST.ExpressionStatement)s).Expression; if (e.Flavor == JST.ExpressionFlavor.Call) { var call = (JST.CallExpression)e; if (call.Applicand.Flavor == JST.ExpressionFlavor.Identifier) { var callid = ((JST.IdentifierExpression)call.Applicand).Identifier; var callargs = new Seq<string>(); ok = true; foreach (var a in call.Arguments) { if (a.Flavor == JST.ExpressionFlavor.String) callargs.Add(((JST.StringLiteral)a).Value); else ok = false; } if (ok) { var n = callargs.Count; if (callid.Equals(Constants.TraceFileAssembly) && n == 1) AddAssembly(ctxt, callargs[0]); else if (callid.Equals(Constants.TraceFileType) && n == 2) AddType(ctxt, callargs[0], callargs[1]); else if (callid.Equals(Constants.TraceFileMethod) && n == 3) AddMethod(ctxt, callargs[0], callargs[1], callargs[2]); else ok = false; } } } } if (!ok) { traces.Env.Log(new InvalidTraceMessage(ctxt, "syntax error")); throw new ExitException(); } } }
public Trace(Traces parent, string name, TraceFlavor flavor) { Parent = parent; Name = name; Flavor = flavor; AssemblyMap = new Map<CST.AssemblyName, AssemblyTrace>(); }
public void Load(Traces traces, string traceFilename) { var prog = JST.Program.FromFile(traceFilename, true); foreach (var s in prog.Body.Body) { var ctxt = CompMsgContext.TraceFile(s.Loc); var ok = false; if (s.Flavor == JST.StatementFlavor.Comment) { ok = true; } else if (s.Flavor == JST.StatementFlavor.Expression) { var e = ((JST.ExpressionStatement)s).Expression; if (e.Flavor == JST.ExpressionFlavor.Call) { var call = (JST.CallExpression)e; if (call.Applicand.Flavor == JST.ExpressionFlavor.Identifier) { var callid = ((JST.IdentifierExpression)call.Applicand).Identifier; var callargs = new Seq <string>(); ok = true; foreach (var a in call.Arguments) { if (a.Flavor == JST.ExpressionFlavor.String) { callargs.Add(((JST.StringLiteral)a).Value); } else { ok = false; } } if (ok) { var n = callargs.Count; if (callid.Equals(Constants.TraceFileAssembly) && n == 1) { AddAssembly(ctxt, callargs[0]); } else if (callid.Equals(Constants.TraceFileType) && n == 2) { AddType(ctxt, callargs[0], callargs[1]); } else if (callid.Equals(Constants.TraceFileMethod) && n == 3) { AddMethod(ctxt, callargs[0], callargs[1], callargs[2]); } else { ok = false; } } } } } if (!ok) { traces.Env.Log(new InvalidTraceMessage(ctxt, "syntax error")); throw new ExitException(); } } }
public void SetupMetadata(CST.Global global) { NumWarnings = 0; NumErrors = 0; Global = global; if (tracerStream != null) Tracer = new CST.CSTWriter(global, CST.WriterStyle.Debug, tracerStream); Validity = new ValidityContext(this); GenericEnumeratorTypeConstructorRef = MkRef(Constants.GenericEnumeratorTypeConstructorName); JSContextRef = MkRef(Constants.JSContextName); JSObjectRef = MkRef(Constants.JSObjectName); JSPropertyRef = MkRef(Constants.JSPropertyName); JSExceptionRef = MkRef(Constants.JSExceptionName); GlobalMapping = new GlobalMapping(this); AttributeHelper = new AttributeHelper(this); InteropManager = new InteropManager(this); JSTHelpers = new JSTHelpers(this); InlinedMethods = new InlinedMethodCache(this); Traces = new Traces(this); }