Examples of TypeCheckError


Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

    if (!argType.identicalTo(exp.getType())) {
        try {
      _arguments.setElementAt(new CastExpr(exp, argType), i);
        }
        catch (TypeCheckError e) {
      throw new TypeCheckError(this)// invalid conversion
        }
    }
      }
      _chosenMethodType = ptype;
      return _type = ptype.resultType();
  }
  throw new TypeCheckError(this);
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

    public Type typeCheckConstructor(SymbolTable stable) throws TypeCheckError{
        final Vector constructors = findConstructors();
  if (constructors == null) {
            // Constructor not found in this class
            throw new TypeCheckError(ErrorMsg.CONSTRUCTOR_NOT_FOUND,
    _className);
       
  }

  final int nConstructors = constructors.size();
  final int nArgs = _arguments.size();
  final Vector argsType = typeCheckArgs(stable);

  // Try all constructors
  int bestConstrDistance = Integer.MAX_VALUE;
  _type = null;      // reset
  for (int j, i = 0; i < nConstructors; i++) {
      // Check if all parameters to this constructor can be converted
      final Constructor constructor =
    (Constructor)constructors.elementAt(i);
      final Class[] paramTypes = constructor.getParameterTypes();

      Class extType = null;
      int currConstrDistance = 0;
      for (j = 0; j < nArgs; j++) {
    // Convert from internal (translet) type to external (Java) type
    extType = paramTypes[j];
    final Type intType = (Type)argsType.elementAt(j);
    Object match = _internal2Java.maps(intType, extType);
    if (match != null) {
        currConstrDistance += ((JavaType)match).distance;
    }
    else if (intType instanceof ObjectType) {
        ObjectType objectType = (ObjectType)intType;
        if (objectType.getJavaClass() == extType)
            continue;
        else if (extType.isAssignableFrom(objectType.getJavaClass()))
            currConstrDistance += 1;
        else {
      currConstrDistance = Integer.MAX_VALUE;
      break;
        }
    }
    else {
        // no mapping available
        currConstrDistance = Integer.MAX_VALUE;
        break;
    }
      }

      if (j == nArgs && currConstrDistance < bestConstrDistance ) {
          _chosenConstructor = constructor;
          _isExtConstructor = true;
    bestConstrDistance = currConstrDistance;
   
                _type = (_clazz != null) ? Type.newObjectType(_clazz)
                    : Type.newObjectType(_className);
      }
  }

  if (_type != null) {
      return _type;
  }

  throw new TypeCheckError(ErrorMsg.ARGUMENT_CONVERSION_ERR, getMethodSignature(argsType));
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

          _arguments.remove(0); nArgs--;
        if (firstArgType instanceof ObjectType) {
          _className = ((ObjectType) firstArgType).getJavaClassName();
        }
        else
          throw new TypeCheckError(ErrorMsg.NO_JAVA_FUNCT_THIS_REF, name);       
      }
      }
      else if (_className.length() == 0) {
    /*
     * Warn user if external function could not be resolved.
     * Warning will _NOT_ be issued is the call is properly
     * wrapped in an <xsl:if> or <xsl:when> element. For details
     * see If.parserContents() and When.parserContents()
     */
    final Parser parser = getParser();
    if (parser != null) {
        reportWarning(this, parser, ErrorMsg.FUNCTION_RESOLVE_ERR,
          _fname.toString());
    }
    unresolvedExternal = true;
    return _type = Type.Int;  // use "Int" as "unknown"
      }
  }
 
  final Vector methods = findMethods();
 
  if (methods == null) {
      // Method not found in this class
      throw new TypeCheckError(ErrorMsg.METHOD_NOT_FOUND_ERR, _className + "." + name);
  }

  Class extType = null;
  final int nMethods = methods.size();
  final Vector argsType = typeCheckArgs(stable);

  // Try all methods to identify the best fit
  int bestMethodDistance  = Integer.MAX_VALUE;
  _type = null;                       // reset internal type
  for (int j, i = 0; i < nMethods; i++) {
      // Check if all paramteters to this method can be converted
      final Method method = (Method)methods.elementAt(i);
      final Class[] paramTypes = method.getParameterTypes();
     
      int currMethodDistance = 0;
      for (j = 0; j < nArgs; j++) {
    // Convert from internal (translet) type to external (Java) type
    extType = paramTypes[j];
    final Type intType = (Type)argsType.elementAt(j);
    Object match = _internal2Java.maps(intType, extType);
    if (match != null) {
        currMethodDistance += ((JavaType)match).distance;
    }
    else {
        // no mapping available
        //
        // Allow a Reference type to match any external (Java) type at
        // the moment. The real type checking is performed at runtime.
        if (intType instanceof ReferenceType) {
           currMethodDistance += 1;
        }
        else if (intType instanceof ObjectType) {
            ObjectType object = (ObjectType)intType;
            if (extType.getName().equals(object.getJavaClassName()))
                currMethodDistance += 0;
            else if (extType.isAssignableFrom(object.getJavaClass()))
                currMethodDistance += 1;
            else {
                currMethodDistance = Integer.MAX_VALUE;
                break;
            }
        }
        else {
            currMethodDistance = Integer.MAX_VALUE;
            break;
        }
    }
      }

      if (j == nArgs) {
      // Check if the return type can be converted
      extType = method.getReturnType();
   
      _type = (Type) _java2Internal.get(extType);
      if (_type == null) {
          _type = Type.newObjectType(extType);
      }   

      // Use this method if all parameters & return type match
      if (_type != null && currMethodDistance < bestMethodDistance) {
          _chosenMethod = method;
          bestMethodDistance = currMethodDistance;
      }
      }
  }
 
  // It is an error if the chosen method is an instance menthod but we don't
  // have a this argument.
  if (_chosenMethod != null && _thisArgument == null &&
      !Modifier.isStatic(_chosenMethod.getModifiers())) {
      throw new TypeCheckError(ErrorMsg.NO_JAVA_FUNCT_THIS_REF, getMethodSignature(argsType));
  }

  if (_type != null) {
      if (_type == Type.NodeSet) {
              getXSLTC().setMultiDocument(true);
            }
      return _type;
  }

  throw new TypeCheckError(ErrorMsg.ARGUMENT_CONVERSION_ERR, getMethodSignature(argsType));
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

  }
  if (InternalTypeMap.maps(tleft, _type) != null) {
      return _type;
  }
  // throw new TypeCheckError(this); 
  throw new TypeCheckError(new ErrorMsg(
      ErrorMsg.DATA_CONVERSION_ERR, tleft.toString(), _type.toString()));
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

      if (!arg2.identicalTo(tright)) {
    _right = new CastExpr(_right, arg1);       
      }
      return _type = ptype.resultType();
  }
  throw new TypeCheckError(this);
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

      if (!arg2.identicalTo(tright)) {
    _right = new CastExpr(_right, arg1);
      }
      return _type = ptype.resultType();
  }
  throw new TypeCheckError(this);
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

     */
    public Type typeCheck(SymbolTable stable) throws TypeCheckError {

  // Check that the function was passed exactly two arguments
  if (argumentCount() != 2) {
      throw new TypeCheckError(ErrorMsg.ILLEGAL_ARG_ERR, getName(), this);
  }

  // The first argument must be a String, or cast to a String
  _base = argument(0);
  Type baseType = _base.typeCheck(stable)
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
        // At least one argument - two at most
        final int ac = argumentCount();
        if ((ac < 1) || (ac > 2)) {
            ErrorMsg msg = new ErrorMsg(ErrorMsg.ILLEGAL_ARG_ERR, this);
            throw new TypeCheckError(msg);
        }
        if (getStylesheet() == null) {
            ErrorMsg msg = new ErrorMsg(ErrorMsg.ILLEGAL_ARG_ERR, this);
            throw new TypeCheckError(msg);
        }

        // Parse the first argument
        _arg1 = argument(0);

        if (_arg1 == null) {// should not happened
            ErrorMsg msg = new ErrorMsg(ErrorMsg.DOCUMENT_ARG_ERR, this);
            throw new TypeCheckError(msg);
        }

        _arg1Type = _arg1.typeCheck(stable);
        if ((_arg1Type != Type.NodeSet) && (_arg1Type != Type.String)) {
            _arg1 = new CastExpr(_arg1, Type.String);
        }

        // Parse the second argument
        if (ac == 2) {
            _arg2 = argument(1);

            if (_arg2 == null) {// should not happened
                ErrorMsg msg = new ErrorMsg(ErrorMsg.DOCUMENT_ARG_ERR, this);
                throw new TypeCheckError(msg);
            }

            final Type arg2Type = _arg2.typeCheck(stable);

            if (arg2Type.identicalTo(Type.Node)) {
                _arg2 = new CastExpr(_arg2, Type.NodeSet);
            } else if (arg2Type.identicalTo(Type.NodeSet)) {
                // falls through
            } else {
                ErrorMsg msg = new ErrorMsg(ErrorMsg.DOCUMENT_ARG_ERR, this);
                throw new TypeCheckError(msg);
            }
        }

        return _type = Type.NodeSet;
    }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

      }
      if (_type instanceof NodeSetType||_type instanceof ResultTreeType) {
    typeCheckContents(stable); // with-params
    return Type.Void;
      }
      throw new TypeCheckError(this);
  }
  else {
      typeCheckContents(stable);    // with-params
      return Type.Void;
  }
View Full Code Here

Examples of org.apache.xalan.xsltc.compiler.util.TypeCheckError

     * Type check the two parameters for this function
     */
    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  // Check that the function was passed exactly two arguments
  if (argumentCount() != 2) {
      throw new TypeCheckError(new ErrorMsg(ErrorMsg.ILLEGAL_ARG_ERR,
                                                  getName(), this));
  }

        // The first argument must be a literal String
  Expression exp = argument(0);
        if (exp instanceof LiteralExpr) {
            _className = ((LiteralExpr) exp).getValue();
            _type = Type.newObjectType(_className);
        }
        else {
      throw new TypeCheckError(new ErrorMsg(ErrorMsg.NEED_LITERAL_ERR,
                                                  getName(), this));
        }
       
         // Second argument must be of type reference or object
        _right = argument(1);
        Type tright = _right.typeCheck(stable);
        if (tright != Type.Reference &&
            tright instanceof ObjectType == false)
        {
      throw new TypeCheckError(new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
                                                  tright, _type, this));
        }
       
        return _type;
    }
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.