Examples of WeaselInstructionCastPrimitive


Examples of weasel.interpreter.bytecode.WeaselInstructionCastPrimitive

    }
    if(returnType.getBaseClass().isPrimitive() && weaselGenericClass.getBaseClass().isPrimitive()){
      if(returnType.getBaseClass()!=weaselGenericClass.getBaseClass()){
        boolean canCast = WeaselPrimitive.canCastAutoTo(returnType.getBaseClass(), weaselGenericClass.getBaseClass());
        if(canCast){
          instructions.addWithoutLine(new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(weaselGenericClass.getBaseClass())));
          returnType = weaselGenericClass;
        }else{
          throw new WeaselCompilerException(instructions.getLine(), "Types %s and %s are not compatible", returnType, weaselGenericClass);
        }
      }
      return instructions;
    }
    WeaselGenericClass returnWrapper;
    WeaselGenericClass expectWrapper;
    if(returnType.getBaseClass().isPrimitive()){
      returnWrapper = new WeaselGenericClass(compiler.getWeaselClass(WeaselPrimitive.getWrapper(returnType.getBaseClass())));
    }else{
      returnWrapper = returnType;
    }
    if(weaselGenericClass.getBaseClass().isPrimitive()){
      expectWrapper = new WeaselGenericClass(compiler.getWeaselClass(WeaselPrimitive.getWrapper(weaselGenericClass.getBaseClass())));
    }else{
      expectWrapper = weaselGenericClass;
    }
   
    if(returnType.getBaseClass().isPrimitive()){
      instructions.addWithoutLine(new WeaselInstructionCast(returnWrapper.getBaseClass().getByteName()));
    }
   
    if(!returnWrapper.getBaseClass().isInterface() && !expectWrapper.getBaseClass().isInterface()){
      if(returnWrapper.canCastTo(expectWrapper) && !expectWrapper.canCastTo(returnWrapper)){
        throw new WeaselCompilerException(instructions.getLine(), "Types %s and %s are not compatible", returnType, weaselGenericClass);
      }
    }
   
    instructions.addWithoutLine(new WeaselInstructionCast(expectWrapper.getBaseClass().getRealName()));
   
    if(weaselGenericClass.getBaseClass().isPrimitive()){
      instructions.addWithoutLine(new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(weaselGenericClass.getBaseClass())));
    }
    returnType = weaselGenericClass;
    return instructions;
  }
View Full Code Here

Examples of weasel.interpreter.bytecode.WeaselInstructionCastPrimitive

      WeaselClass wc = compiler.getWeaselClass(WeaselClass.mapClassNames(wct.className));
      ret = new WeaselGenericClass(wc);
      wcr = compileOperator(compiler, compilerHelper, write, ret, elementParent, isVariable, i+1);
      instructions = wcr.getInstructions();
      if(wc.isPrimitive()){
        instructions.add(operator.line, new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(wc)));
      }else{
        instructions.add(operator.line, new WeaselInstructionCast(wc.getByteName()));
      }
    }else if(oper==WeaselOperator.MINUS_PREFIX || oper==WeaselOperator.PLUS_PREFIX){
      wcr = compileOperator(compiler, compilerHelper, null, null, null, false, i+1);
View Full Code Here

Examples of weasel.interpreter.bytecode.WeaselInstructionCastPrimitive

      instructions.add(line, new WeaselInstructionCast(wc2.getBaseClass().getByteName()));
    }else if(wc1.getBaseClass().isPrimitive() && wc2.getBaseClass().isPrimitive()){
      if(wc1.getBaseClass()!=wc2.getBaseClass()){
        boolean canCast = WeaselPrimitive.canCastAutoTo(wc1.getBaseClass(), wc2.getBaseClass());
        if(canCast){
          instructions.add(line, new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(wc2.getBaseClass())));
          return wc2;
        }else if(b){
          throw new WeaselCompilerException(line, "Types %s and %s are not compatible", wc1, wc2);
        }
      }
View Full Code Here

Examples of weasel.interpreter.bytecode.WeaselInstructionCastPrimitive

    }
    if(returnType.getBaseClass().isPrimitive() && weaselGenericClass.getBaseClass().isPrimitive()){
      if(returnType.getBaseClass()!=weaselGenericClass.getBaseClass()){
        boolean canCast = WeaselPrimitive.canCastAutoTo(returnType.getBaseClass(), weaselGenericClass.getBaseClass());
        if(canCast){
          instructionList.addWithoutLine(new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(weaselGenericClass.getBaseClass())));
          returnType = weaselGenericClass;
        }else{
          throw new WeaselCompilerException(instructionList.getLine(), "Types %s and %s are not compatible", returnType, weaselGenericClass);
        }
      }
      return instructionList;
    }
    WeaselGenericClass returnWrapper;
    WeaselGenericClass expectWrapper;
    if(returnType.getBaseClass().isPrimitive()){
      returnWrapper = new WeaselGenericClass(compiler.getWeaselClass(WeaselPrimitive.getWrapper(returnType.getBaseClass())));
    }else{
      returnWrapper = returnType;
    }
    if(weaselGenericClass.getBaseClass().isPrimitive()){
      expectWrapper = new WeaselGenericClass(compiler.getWeaselClass(WeaselPrimitive.getWrapper(weaselGenericClass.getBaseClass())));
    }else{
      expectWrapper = weaselGenericClass;
    }
   
    if(returnType.getBaseClass().isPrimitive()){
      instructionList.addWithoutLine(new WeaselInstructionCast(returnWrapper.getBaseClass().getByteName()));
    }
   
    if(!returnWrapper.getBaseClass().isInterface() && !expectWrapper.getBaseClass().isInterface()){
      if(returnWrapper.canCastTo(expectWrapper) && !expectWrapper.canCastTo(returnWrapper)){
        throw new WeaselCompilerException(instructionList.getLine(), "Types %s and %s are not compatible", returnType, weaselGenericClass);
      }
    }
   
    instructionList.addWithoutLine(new WeaselInstructionCast(expectWrapper.getBaseClass().getRealName()));
   
    if(weaselGenericClass.getBaseClass().isPrimitive()){
      instructionList.addWithoutLine(new WeaselInstructionCastPrimitive(WeaselPrimitive.getPrimitiveID(weaselGenericClass.getBaseClass())));
    }
    returnType = weaselGenericClass;
    return instructionList;
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.