예제 #1
0
        public void VisitDereferenceUnaryOp(DereferenceUnaryOpNode node)
        {
            node.RHS.AcceptExpressionVisitor(_expressionVisitor);
            IType referencedType = _semanticModule.ExpressionResultTypes[node];
            int   size           = _typeSizeManager.GetSize(referencedType);
            int   startAddr      = _builder.AddInstruction(OpCode.DEREF, size: size);

            _builder.AddDebugSymbol(startAddr, node);
        }
예제 #2
0
        public void VisitDereferenceUnaryOp(DereferenceUnaryOpNode node)
        {
            node.RHS.AcceptExpressionVisitor(this);

            if (!(Type is IPointerType pointerType))
            {
                _errors.AddError("Cannot dereference non-pointer type", node);
                SetAndCacheType(node, Type);
                return;
            }

            SetAndCacheType(node, pointerType.DestinationType);
        }
예제 #3
0
 public void VisitDereferenceUnaryOp(DereferenceUnaryOpNode node)
 {
     VisitPreOrder(node);
     node.RHS.AcceptExpressionVisitor(this);
     VisitPostOrder(node);
 }
예제 #4
0
 public void VisitDereferenceUnaryOp(DereferenceUnaryOpNode node)
 {
 }