Sha256: 393524d9ef94691042397b6df3c5b196d720bb60f492a9573baec70513dfb1a6

Contents?: true

Size: 1.86 KB

Versions: 135

Compression:

Stored size: 1.86 KB

Contents

/**
 * Copyright 2005-2007 Xue Yong Zhi
 * Distributed under the BSD License
 */

package com.xruby.compiler.codedom;

public class SuperExpression extends Expression {

    private MethodCallArguments arguments_;
    private Block block_;

    public SuperExpression(MethodCallArguments arguments, Block block) {
        arguments_ = arguments;
        block_ = block;
    }

    public void accept(CodeVisitor visitor) {
        if (null == arguments_) {
            acceptSuperWithImplicitParameter(visitor);
        } else {
            acceptSuperWithExplicitParameter(visitor);
        }
    }

    private void acceptSuperWithImplicitParameter(CodeVisitor visitor) {
        visitor.visitSuperBegin();
        visitor.visitNoParameterForSuper();
        acceptBlock(visitor);
        visitor.visitImplicitSuperEnd();
    }

    private void acceptSuperWithExplicitParameter(CodeVisitor visitor) {
        visitor.visitSuperBegin();

        final int argc = (null == arguments_.getAsteriskArgument()) ? arguments_.size() : -1;

        if (0 == argc) {
            //do nothing
        } else if (1 == argc) {
            arguments_.getFirstExpression().accept(visitor);
        } else if (2 == argc) {
			arguments_.getFirstExpression().accept(visitor);
			arguments_.getSecondExpression().accept(visitor);
        } else {
            arguments_.accept(visitor);
        }

        acceptBlock(visitor);

        visitor.visitExplicitSuperEnd(argc);
    }

    private void acceptBlock(CodeVisitor visitor) {
        if (null != block_) {
            block_.accept(visitor);
        } else if (null != arguments_ && null != arguments_.getBlockArgument()) {
            arguments_.getBlockArgument().accept(visitor);
            visitor.visitBlockArgument();
        } else {
            visitor.visitNoBlock(true);
        }
    }

}

Version data entries

135 entries across 135 versions & 2 rubygems

Version Path
rhodes-7.6.0 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-7.5.1 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-7.4.1 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-7.1.17 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-6.2.0 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-6.0.11 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.18 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.17 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.15 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.0.22 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.2 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.0.7 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.0.3 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-5.5.0 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
tauplatform-1.0.3 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
tauplatform-1.0.2 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
tauplatform-1.0.1 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-3.5.1.12 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-3.3.5 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java
rhodes-3.4.2 platform/shared/xruby/src/com/xruby/compiler/codedom/SuperExpression.java