예제 #1
0
        internal IFunction FunctionFeature(CompoundView compoundView)
        {
            if(IsMetaFunction)
                return null;

            return new FunctionBodyType(compoundView, this);
        }
예제 #2
0
 int CreateFunctionInstance(TypeBase args, FunctionSyntax syntax, CompoundView compoundView)
 {
     var index = _list.Count;
     var f = new FunctionType(index, syntax, compoundView, args);
     _list.Add(f);
     return index;
 }
예제 #3
0
 internal AccessFeature(CompoundView compoundView, int position)
     : base(_nextObjectId++)
 {
     View = compoundView;
     Position = position;
     FunctionFeature = new ValueCache<IFunction>(ObtainFunctionFeature);
     StopByObjectIds();
 }
예제 #4
0
        internal IMeta MetaFunctionFeature(CompoundView compoundView)
        {
            if(!IsMetaFunction)
                return null;

            NotImplementedMethod(compoundView);
            return null;
        }
예제 #5
0
 internal FunctionType
     (int index, FunctionSyntax body, CompoundView compoundView, TypeBase argsType)
 {
     Getter = new GetterFunction(this, index, body.Getter);
     Setter = body.Setter == null ? null : new SetterFunction(this, index, body.Setter);
     Index = index;
     Body = body;
     _compoundView = compoundView;
     ArgsType = argsType;
     StopByObjectIds();
 }
예제 #6
0
 internal IEnumerable<FunctionType> Find(FunctionSyntax syntax, CompoundView compoundView)
     => _dictionary[syntax][compoundView].Select(item => _list[item.Value]);
예제 #7
0
 internal FunctionType Find
     (FunctionSyntax syntax, CompoundView compoundView, TypeBase argsType)
 {
     var index = _dictionary[syntax][compoundView][argsType];
     return _list[index];
 }
예제 #8
0
 public RecursionWhileObtainingCompoundSizeException(CompoundView compoundView)
 {
     _compoundView = compoundView;
 }
예제 #9
0
 internal FieldAccessType(CompoundView compoundView, int position)
 {
     View = compoundView;
     Position = position;
 }