Beispiel #1
0
 public PostTypeRewriter(Compiler.CompilationCache pUnit)
 {
     _methodsToPoly = new Dictionary <string, List <MethodSyntax> >();
     _polydMethods  = new Dictionary <string, List <MethodSyntax> >();
     _unit          = pUnit;
     GetEnumerable();
 }
 public ModuleReferenceVisitor(Compiler.CompilationCache pUnit, EmittingContext pContext, Compiler.CompilationModule pModule = null)
 {
     _context    = pContext;
     _module     = pModule;
     _unit       = pUnit;
     MethodNodes = new List <ReferencedNode>();
     TypeNodes   = new List <ReferencedNode>();
 }
Beispiel #3
0
 public PolyRewriter(Compiler.CompilationCache pCompilation)
 {
     _compilation   = pCompilation;
     _structsToPoly = new Dictionary <string, TypeDefinitionSyntax>();
     _implements    = new Dictionary <string, List <TypeDefinitionSyntax> >();
 }
 public ReferencedNode(SyntaxNode pNode, Compiler.CompilationCache pUnit)
 {
     Node = pNode;
     Unit = pUnit;
 }
 public PostTypeValidationVisitor(Compiler.CompilationCache pUnit)
 {
     _unit = pUnit;
 }
Beispiel #6
0
 public PreTypeRewriter(Compiler.CompilationCache pUnit)
 {
     _unit = pUnit;
 }
 public TypeInferenceVisitor(Compiler.CompilationCache pUnit)
 {
     _locals = new ScopeCache <LocalDefinition>();
     _unit   = pUnit;
 }
 public TypeDiscoveryVisitor(Compiler.CompilationCache pUnit)
 {
     _discoveryGraph = new TypeDiscoveryGraph();
     _implements     = new Dictionary <string, List <TypeDefinitionSyntax> >();
     _unit           = pUnit;
 }
Beispiel #9
0
        internal static Compiler.FindResult FindMethodOnType(out MethodDefinition pDef, Compiler.CompilationCache pUnit, string pNamespace, string pName, SmallType pType, params SmallType[] pArguments)
        {
            if (pType != null)
            {
                pNamespace = pType.Namespace;
            }

            //If it's not an exact match, look through each traits methods until we find it
            var result = pUnit.FindMethod(out pDef, pNamespace, pType, pName, pArguments);

            if (result != Compiler.FindResult.Found)
            {
                if (pType != null)
                {
                    foreach (var trait in pType.Implements)
                    {
                        result = pUnit.FindMethod(out pDef, pNamespace, trait, pName, pArguments);
                        if (result == Compiler.FindResult.Found)
                        {
                            return(result);
                        }
                    }
                }

                return(result);
            }

            return(result);
        }
 public PreTypeValidation(Compiler.CompilationCache pCache)
 {
     _cache = pCache;
 }
Beispiel #11
0
 public TypeChecker(Compiler.CompilationCache pUnit)
 {
     _unit = pUnit;
 }