コード例 #1
0
 public override void TraverseChildren(ITokenOf tokenOf) {
   base.TraverseChildren(tokenOf);
   var typeRef = tokenOf.Definition as ITypeReference;
   if (typeRef == null) {
     var typeMemberRef = tokenOf.Definition as ITypeMemberReference;
     if (typeMemberRef != null)
       typeRef = typeMemberRef.ContainingType;
   }
   if (typeRef != null) {
     var typeDef = typeRef.ResolvedType;
     if (TypeHelper.IsCompilerGenerated(typeDef)) {
       if (this.closuresThatCannotBeDeleted == null)
         this.closuresThatCannotBeDeleted = new Hashtable<object>();
       while (typeDef != null) {
         this.closuresThatCannotBeDeleted[typeDef.InternedKey] = typeDef;
         ITypeDefinition baseType = null;
         foreach (var baseTypeRef in typeDef.BaseClasses) {
           baseType = baseTypeRef as ITypeDefinition;
           if (baseType != null) break;
         }
         typeDef = baseType;
       }         
     }         
   }
 }
コード例 #2
0
ファイル: TypeInferencer.cs プロジェクト: xornand/cci
        public override void TraverseChildren(ITokenOf tokenOf)
        {
            base.TraverseChildren(tokenOf);
            ITypeReference        type;
            IFieldReference /*?*/ field = tokenOf.Definition as IFieldReference;

            if (field != null)
            {
                type = this.platformType.SystemRuntimeFieldHandle;
            }
            else
            {
                IMethodReference /*?*/ method = tokenOf.Definition as IMethodReference;
                if (method != null)
                {
                    type = this.platformType.SystemRuntimeMethodHandle;
                }
                else
                {
                    Contract.Assume(tokenOf.Definition is ITypeReference);
                    type = this.platformType.SystemRuntimeTypeHandle;
                }
            }
            ((TokenOf)tokenOf).Type = type;
        }
コード例 #3
0
 public override void Visit(ITokenOf tokenOf)
 {
     if (Process(tokenOf))
     {
         visitor.Visit(tokenOf);
     }
     base.Visit(tokenOf);
 }
コード例 #4
0
ファイル: ClosureFinder.cs プロジェクト: pkunze/visualmutator
        public override void TraverseChildren(ITokenOf tokenOf)
        {
            base.TraverseChildren(tokenOf);
            var typeRef = tokenOf.Definition as ITypeReference;

            if (typeRef == null)
            {
                var typeMemberRef = tokenOf.Definition as ITypeMemberReference;
                if (typeMemberRef != null)
                {
                    typeRef = typeMemberRef.ContainingType;
                }
            }
            if (typeRef != null)
            {
                var typeDef = typeRef.ResolvedType;
                if (TypeHelper.IsCompilerGenerated(typeDef))
                {
                    if (this.closuresThatCannotBeDeleted == null)
                    {
                        this.closuresThatCannotBeDeleted = new Hashtable <object>();
                    }
                    while (typeDef != null)
                    {
                        this.closuresThatCannotBeDeleted[typeDef.InternedKey] = typeDef;
                        ITypeDefinition baseType = null;
                        foreach (var baseTypeRef in typeDef.BaseClasses)
                        {
                            baseType = baseTypeRef as ITypeDefinition;
                            if (baseType != null)
                            {
                                break;
                            }
                        }
                        typeDef = baseType;
                    }
                }
            }
        }
コード例 #5
0
 public virtual void onASTElement(ITokenOf tokenOf) { }
コード例 #6
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified token of.
 /// </summary>
 /// <param name="tokenOf">The token of.</param>
 public override void Visit(ITokenOf tokenOf)
 {
     TokenOf mutableTokenOf = tokenOf as TokenOf;
     if (alwaysMakeACopy || mutableTokenOf == null) mutableTokenOf = new TokenOf(tokenOf);
     this.resultExpression = this.myCodeMutator.Visit(mutableTokenOf);
 }
コード例 #7
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ITokenOf tokenOf)
 {
     Contract.Requires(tokenOf != null);
       throw new NotImplementedException();
 }
コード例 #8
0
ファイル: Expressions.cs プロジェクト: riverar/devtools
 /// <summary>
 /// 
 /// </summary>
 /// <param name="tokenOf"></param>
 public TokenOf(ITokenOf tokenOf)
     : base(tokenOf)
 {
     this.definition = tokenOf.Definition;
 }
コード例 #9
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the tokenof() expression.
 /// </summary>
 public void Traverse(ITokenOf tokenOf)
 {
     Contract.Requires(tokenOf != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(tokenOf);
       if (this.StopTraversal) return;
       this.TraverseChildren(tokenOf);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(tokenOf);
 }
コード例 #10
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ITokenOf tokenOf)
 {
     this.traverser.Traverse(tokenOf);
 }
コード例 #11
0
 public virtual void onASTElement(ITokenOf tokenOf)
 {
 }
コード例 #12
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual void Visit(ITokenOf tokenOf)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(tokenOf);
       IFieldReference/*?*/ fieldReference = tokenOf.Definition as IFieldReference;
       if (fieldReference != null)
     this.Visit(fieldReference);
       else {
     IMethodReference/*?*/ methodReference = tokenOf.Definition as IMethodReference;
     if (methodReference != null)
       this.Visit(methodReference);
     else
       this.Visit((ITypeReference)tokenOf.Definition);
       }
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not to decrease this.path.Count.
       this.path.Pop();
 }
コード例 #13
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a shallow copy of the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public TokenOf Copy(ITokenOf tokenOf)
 {
     return new TokenOf(tokenOf);
 }
コード例 #14
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Rewrites the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual IExpression Rewrite(ITokenOf tokenOf)
 {
     var mutableTokenOf = tokenOf as TokenOf;
       if (mutableTokenOf == null) return tokenOf;
       this.RewriteChildren(mutableTokenOf);
       return mutableTokenOf;
 }
コード例 #15
0
ファイル: Visitor.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Generates IL for the specified token of.
 /// </summary>
 /// <param name="tokenOf">The token of.</param>
 public override void TraverseChildren(ITokenOf tokenOf)
 {
     IFieldReference/*?*/ fieldReference = tokenOf.Definition as IFieldReference;
       if (fieldReference != null)
     this.generator.Emit(OperationCode.Ldtoken, fieldReference);
       else {
     IMethodReference/*?*/ methodReference = tokenOf.Definition as IMethodReference;
     if (methodReference != null)
       this.generator.Emit(OperationCode.Ldtoken, methodReference);
     else
       this.generator.Emit(OperationCode.Ldtoken, (ITypeReference)tokenOf.Definition);
       }
       this.StackSize++;
 }
コード例 #16
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 public void Visit(ITokenOf tokenOf)
 {
     this.result = this.rewriter.Rewrite(tokenOf);
 }
コード例 #17
0
 public override void Visit(ITokenOf tokenOf)
 {
     if(Process(tokenOf)){visitor.Visit(tokenOf);}
     base.Visit(tokenOf);
 }
コード例 #18
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 public void Visit(ITokenOf tokenOf)
 {
     this.result = this.copier.Copy(tokenOf);
 }
コード例 #19
0
 public override void Visit(ITokenOf tokenOf)
 {
     allElements.Add(new InvokInfo(Traverser, "ITokenOf", tokenOf));
 }
コード例 #20
0
        public override void TraverseChildren(ITokenOf tokenOf)
{ MethodEnter(tokenOf);
            base.TraverseChildren(tokenOf);
     MethodExit();   }
コード例 #21
0
 /// <summary>
 /// Rewrites the given tokenof(); expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual IExpression Rewrite(ITokenOf tokenOf)
 {
     return tokenOf;
 }
コード例 #22
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual void Visit(ITokenOf tokenOf)
 {
 }
コード例 #23
0
 public override void TraverseChildren(ITokenOf tokenOf) {
   base.TraverseChildren(tokenOf);
   ITypeReference type;
   IFieldReference/*?*/ field = tokenOf.Definition as IFieldReference;
   if (field != null)
     type = this.platformType.SystemRuntimeFieldHandle;
   else {
     IMethodReference/*?*/ method = tokenOf.Definition as IMethodReference;
     if (method != null)
       type = this.platformType.SystemRuntimeMethodHandle;
     else {
       Contract.Assume(tokenOf.Definition is ITypeReference);
       type = this.platformType.SystemRuntimeTypeHandle;
     }
   }
   ((TokenOf)tokenOf).Type = type;
 }
コード例 #24
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the children of the tokenof() expression.
 /// </summary>
 public virtual void TraverseChildren(ITokenOf tokenOf)
 {
     Contract.Requires(tokenOf != null);
       this.TraverseChildren((IExpression)tokenOf);
       if (this.StopTraversal) return;
       var fieldReference = tokenOf.Definition as IFieldReference;
       if (fieldReference != null)
     this.Traverse(fieldReference);
       else {
     var methodReference = tokenOf.Definition as IMethodReference;
     if (methodReference != null)
       this.Traverse(methodReference);
     else {
       var typeReference = (ITypeReference)tokenOf.Definition;
       this.Traverse(typeReference);
     }
       }
 }
コード例 #25
0
ファイル: Copier.cs プロジェクト: Refresh06/visualmutator
    /// <summary>
    /// Returns a shallow copy of the given tokenof() expression.
    /// </summary>
    /// <param name="tokenOf"></param>
    public TokenOf Copy(ITokenOf tokenOf) {
      Contract.Requires(tokenOf != null);
      Contract.Ensures(Contract.Result<TokenOf>() != null);

      return new TokenOf(tokenOf);
    }
コード例 #26
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual void Visit(ITokenOf tokenOf)
 {
     this.Visit((IExpression)tokenOf);
 }
コード例 #27
0
 /// <summary>
 /// Performs some computation with the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public virtual void Visit(ITokenOf tokenOf)
 {
 }
コード例 #28
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ITokenOf tokenOf)
 {
     throw new NotImplementedException();
 }
コード例 #29
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified token of.
 /// </summary>
 /// <param name="tokenOf">The token of.</param>
 public override void Visit(ITokenOf tokenOf)
 {
     TokenOf mutableTokenOf = new TokenOf(tokenOf);
     this.resultExpression = this.myCodeCopier.DeepCopy(mutableTokenOf);
 }
コード例 #30
0
 public override void TraverseChildren(ITokenOf tokenOf) {
   this.sourceEmitterOutput.Write("tokenof(");
   base.TraverseChildren(tokenOf);
   this.sourceEmitterOutput.Write(")");
 }
コード例 #31
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a deep copy of the given tokenof() expression.
 /// </summary>
 /// <param name="tokenOf"></param>
 public TokenOf Copy(ITokenOf tokenOf)
 {
     var mutableCopy = this.shallowCopier.Copy(tokenOf);
       this.CopyChildren((Expression)mutableCopy);
       var fieldReference = mutableCopy.Definition as IFieldReference;
       if (fieldReference != null)
     mutableCopy.Definition = this.Copy(fieldReference);
       else {
     var methodReference = mutableCopy.Definition as IMethodReference;
     if (methodReference != null)
       mutableCopy.Definition = this.Copy(methodReference);
     else {
       var typeReference = (ITypeReference)mutableCopy.Definition;
       mutableCopy.Definition = this.Copy(typeReference);
     }
       }
       return mutableCopy;
 }
コード例 #32
0
 public override void TraverseChildren(ITokenOf tokenOf)
 {
     MethodEnter(tokenOf);
     base.TraverseChildren(tokenOf);
     MethodExit();
 }
コード例 #33
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified token of.
 /// </summary>
 /// <param name="tokenOf">The token of.</param>
 public override void Visit(ITokenOf tokenOf)
 {
     TokenOf mutableTokenOf = tokenOf as TokenOf;
     if (mutableTokenOf == null) {
       this.resultExpression = tokenOf;
       return;
     }
     this.resultExpression = this.myCodeMutator.Visit(mutableTokenOf);
 }