cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler AbsoluteLocationPath.java AbsolutePathPattern.java AlternativePattern.java AncestorPattern.java ApplyImports.java ApplyTemplates.java Attribute.java AttributeSet.java AttributeValue.java AttributeValueTemplate.java BinOpExpr.java BooleanCall.java BooleanExpr.java CallTemplate.java CastExpr.java Choose.java Comment.java CompilerContext.java CompilerContextImpl.java ConcatCall.java ContainsCall.java Copy.java CopyOf.java DecimalFormatting.java DocumentCall.java ElementAvailableCall.java EqualityExpr.java Expression.java Fallback.java FilterExpr.java FilterParentPath.java FilteredAbsoluteLocationPath.java ForEach.java FormatNumberCall.java ForwardPositionExpr.java FunctionAvailableCall.java FunctionCall.java IdKeyPattern.java If.java Import.java Include.java Instruction.java IntExpr.java Key.java KeyCall.java LangCall.java LiteralAttribute.java LiteralElement.java LiteralExpr.java LocationPathPattern.java LogicalExpr.java Message.java NameBase.java NamespaceAlias.java Number.java NumberCall.java Otherwise.java Output.java Param.java ParentLocationPath.java ParentPattern.java Parser.java Pattern.java Predicate.java ProcessingInstruction.java ProcessingInstructionPattern.java RealExpr.java RelationalExpr.java SimpleAttributeValue.java Sort.java StartsWithCall.java StaticContext.java StaticContextImpl.java Step.java StepPattern.java StringCall.java Stylesheet.java SyntaxTreeNode.java Template.java Text.java TopLevelElement.java TransletOutput.java UnaryOpExpr.java UnionPathExpr.java UnparsedEntityUriCall.java UnresolvedRef.java UnsupportedElement.java UseAttributeSets.java ValueOf.java Variable.java VariableBase.java VariableRefBase.java When.java Whitespace.java WithParam.java XSLTC.java XslAttribute.java XslElement.java xpath.cup

15 Jan 2003 14:43:10 -0000

santiagopg    2003/01/15 06:43:09

  Modified:    java/src/org/apache/xalan/xsltc/compiler Tag: xslt20
                        AbsoluteLocationPath.java AbsolutePathPattern.java
                        AlternativePattern.java AncestorPattern.java
                        ApplyImports.java ApplyTemplates.java
                        Attribute.java AttributeSet.java
                        AttributeValue.java AttributeValueTemplate.java
                        BinOpExpr.java BooleanCall.java BooleanExpr.java
                        CallTemplate.java CastExpr.java Choose.java
                        Comment.java CompilerContext.java
                        CompilerContextImpl.java ConcatCall.java
                        ContainsCall.java Copy.java CopyOf.java
                        DecimalFormatting.java DocumentCall.java
                        ElementAvailableCall.java EqualityExpr.java
                        Expression.java Fallback.java FilterExpr.java
                        FilterParentPath.java
                        FilteredAbsoluteLocationPath.java ForEach.java
                        FormatNumberCall.java ForwardPositionExpr.java
                        FunctionAvailableCall.java FunctionCall.java
                        IdKeyPattern.java If.java Import.java Include.java
                        Instruction.java IntExpr.java Key.java KeyCall.java
                        LangCall.java LiteralAttribute.java
                        LiteralElement.java LiteralExpr.java
                        LocationPathPattern.java LogicalExpr.java
                        Message.java NameBase.java NamespaceAlias.java
                        Number.java NumberCall.java Otherwise.java
                        Output.java Param.java ParentLocationPath.java
                        ParentPattern.java Parser.java Pattern.java
                        Predicate.java ProcessingInstruction.java
                        ProcessingInstructionPattern.java RealExpr.java
                        RelationalExpr.java SimpleAttributeValue.java
                        Sort.java StartsWithCall.java StaticContext.java
                        StaticContextImpl.java Step.java StepPattern.java
                        StringCall.java Stylesheet.java SyntaxTreeNode.java
                        Template.java Text.java TopLevelElement.java
                        TransletOutput.java UnaryOpExpr.java
                        UnionPathExpr.java UnparsedEntityUriCall.java
                        UnresolvedRef.java UnsupportedElement.java
                        UseAttributeSets.java ValueOf.java Variable.java
                        VariableBase.java VariableRefBase.java When.java
                        Whitespace.java WithParam.java XSLTC.java
                        XslAttribute.java XslElement.java xpath.cup
  Log:
  More global changes. Replaced SymbolTable by static and compiler
  contexts.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.5.8.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AbsoluteLocationPath.java
  
  Index: AbsoluteLocationPath.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AbsoluteLocationPath.java,v
  retrieving revision 1.5.8.1.2.1
  retrieving revision 1.5.8.1.2.2
  diff -u -r1.5.8.1.2.1 -r1.5.8.1.2.2
  --- AbsoluteLocationPath.java 13 Jan 2003 22:02:51 -0000      1.5.8.1.2.1
  +++ AbsoluteLocationPath.java 15 Jan 2003 14:43:03 -0000      1.5.8.1.2.2
  @@ -90,9 +90,9 @@
            (_path != null ? _path.toString() : "null") + ')';
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_path != null) {
  -         final Type ptype = _path.typeCheck(stable);
  +         final Type ptype = _path.typeCheck(ccontext);
            if (ptype instanceof NodeType) {            // promote to node-set
                _path = new CastExpr(_path, Type.NodeSet);
            }
  
  
  
  1.6.2.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AbsolutePathPattern.java
  
  Index: AbsolutePathPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AbsolutePathPattern.java,v
  retrieving revision 1.6.2.1.2.1
  retrieving revision 1.6.2.1.2.2
  diff -u -r1.6.2.1.2.1 -r1.6.2.1.2.2
  --- AbsolutePathPattern.java  13 Jan 2003 22:02:51 -0000      1.6.2.1.2.1
  +++ AbsolutePathPattern.java  15 Jan 2003 14:43:03 -0000      1.6.2.1.2.2
  @@ -80,8 +80,8 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     return _left == null ? Type.Root : _left.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     return _left == null ? Type.Root : _left.typeCheck(ccontext);
       }
   
       public boolean isWildcard() {
  
  
  
  1.2.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AlternativePattern.java
  
  Index: AlternativePattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AlternativePattern.java,v
  retrieving revision 1.2.8.1.2.1
  retrieving revision 1.2.8.1.2.2
  diff -u -r1.2.8.1.2.1 -r1.2.8.1.2.2
  --- AlternativePattern.java   13 Jan 2003 22:02:51 -0000      1.2.8.1.2.1
  +++ AlternativePattern.java   15 Jan 2003 14:43:03 -0000      1.2.8.1.2.2
  @@ -91,9 +91,9 @@
       /**
        * The type of an '|' is not really defined, hence null is returned.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _left.typeCheck(stable);
  -     _right.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _left.typeCheck(ccontext);
  +     _right.typeCheck(ccontext);
        return null;
       }
   
  
  
  
  1.6.2.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AncestorPattern.java
  
  Index: AncestorPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AncestorPattern.java,v
  retrieving revision 1.6.2.1.2.1
  retrieving revision 1.6.2.1.2.2
  diff -u -r1.6.2.1.2.1 -r1.6.2.1.2.2
  --- AncestorPattern.java      13 Jan 2003 22:02:51 -0000      1.6.2.1.2.1
  +++ AncestorPattern.java      15 Jan 2003 14:43:03 -0000      1.6.2.1.2.2
  @@ -103,11 +103,11 @@
        _right.reduceKernelPattern();
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_left != null) {
  -         _left.typeCheck(stable);
  +         _left.typeCheck(ccontext);
        }
  -     return _right.typeCheck(stable);
  +     return _right.typeCheck(ccontext);
       }
   
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  
  
  
  1.10.2.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyImports.java
  
  Index: ApplyImports.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyImports.java,v
  retrieving revision 1.10.2.1.2.2
  retrieving revision 1.10.2.1.2.3
  diff -u -r1.10.2.1.2.2 -r1.10.2.1.2.3
  --- ApplyImports.java 13 Jan 2003 22:02:51 -0000      1.10.2.1.2.2
  +++ ApplyImports.java 15 Jan 2003 14:43:03 -0000      1.10.2.1.2.3
  @@ -151,8 +151,8 @@
       /**
        * Type-check the attributes/contents of an <xsl:apply-imports/> element.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     typeCheckContents(stable);              // with-params
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     typeCheckContents(ccontext);            // with-params
        return Type.Void;
       }
   
  
  
  
  1.14.2.1.2.4 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyTemplates.java
  
  Index: ApplyTemplates.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyTemplates.java,v
  retrieving revision 1.14.2.1.2.3
  retrieving revision 1.14.2.1.2.4
  diff -u -r1.14.2.1.2.3 -r1.14.2.1.2.4
  --- ApplyTemplates.java       13 Jan 2003 22:02:51 -0000      1.14.2.1.2.3
  +++ ApplyTemplates.java       15 Jan 2003 14:43:03 -0000      1.14.2.1.2.4
  @@ -110,21 +110,21 @@
        parseContents(ccontext);// with-params
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_select != null) {
  -         _type = _select.typeCheck(stable);
  +         _type = _select.typeCheck(ccontext);
            if (_type instanceof NodeType || _type instanceof ReferenceType) {
                _select = new CastExpr(_select, Type.NodeSet);
                _type = Type.NodeSet;
            }
            if (_type instanceof NodeSetType||_type instanceof ResultTreeType) {
  -             typeCheckContents(stable); // with-params
  +             typeCheckContents(ccontext); // with-params
                return Type.Void;
            }
            throw new TypeCheckError(this);
        }
        else {
  -         typeCheckContents(stable);          // with-params
  +         typeCheckContents(ccontext);                // with-params
            return Type.Void;
        }
       }
  
  
  
  1.4.12.1.2.2 +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attribute.java
  
  Index: Attribute.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attribute.java,v
  retrieving revision 1.4.12.1.2.1
  retrieving revision 1.4.12.1.2.2
  diff -u -r1.4.12.1.2.1 -r1.4.12.1.2.2
  
  
  
  1.12.2.1.2.4 +9 -9      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeSet.java
  
  Index: AttributeSet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeSet.java,v
  retrieving revision 1.12.2.1.2.3
  retrieving revision 1.12.2.1.2.4
  diff -u -r1.12.2.1.2.3 -r1.12.2.1.2.4
  --- AttributeSet.java 13 Jan 2003 22:02:51 -0000      1.12.2.1.2.3
  +++ AttributeSet.java 15 Jan 2003 14:43:03 -0000      1.12.2.1.2.4
  @@ -119,6 +119,7 @@
        */
       public void parse(CompilerContext ccontext) {
           final Parser parser = ccontext.getParser();
  +        final StaticContextImpl scontext = getStaticContext();
   
        // Get this attribute set's name
        _name = parser.getQNameIgnoreDefaultNs(getAttribute("name"));
  @@ -137,10 +138,10 @@
        // <xsl:attribute> elements. Other elements cause an error.
        final ArrayList contents = getContents();
        final int count = contents.size();
  -     for (int i=0; i<count; i++) {
  +     for (int i = 0; i < count; i++) {
            SyntaxTreeNode child = (SyntaxTreeNode)contents.get(i);
            if (child instanceof XslAttribute) {
  -             parser.getSymbolTable().setCurrentNode(child);
  +             scontext.setCurrentNode(child);
                child.parse(ccontext);
            }
            else if (child instanceof Text) {
  @@ -152,24 +153,23 @@
            }
        }
   
  -     // Point the symbol table back at us...
  -     parser.getSymbolTable().setCurrentNode(this);
  +     // Set new "current" node in static context;
  +     scontext.setCurrentNode(this);
       }
   
       /**
        * Type check the contents of this element
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_ignore) return (Type.Void);
   
           // _mergeSet Point to any previous definition of this attribute set
  -     _mergeSet = stable.addAttributeSet(this);
  +     _mergeSet = getStaticContext().addAttributeSet(this);
   
        _method = AttributeSetPrefix + getXSLTC().nextAttributeSetSerial();
   
  -     if (_useSets != null) _useSets.typeCheck(stable);
  -     typeCheckContents(stable);
  +     if (_useSets != null) _useSets.typeCheck(ccontext);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.2.2.1.2.2 +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeValue.java
  
  Index: AttributeValue.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeValue.java,v
  retrieving revision 1.2.2.1.2.1
  retrieving revision 1.2.2.1.2.2
  diff -u -r1.2.2.1.2.1 -r1.2.2.1.2.2
  
  
  
  1.6.2.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeValueTemplate.java
  
  Index: AttributeValueTemplate.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeValueTemplate.java,v
  retrieving revision 1.6.2.1.2.2
  retrieving revision 1.6.2.1.2.3
  diff -u -r1.6.2.1.2.2 -r1.6.2.1.2.3
  --- AttributeValueTemplate.java       13 Jan 2003 22:02:51 -0000      
1.6.2.1.2.2
  +++ AttributeValueTemplate.java       15 Jan 2003 14:43:04 -0000      
1.6.2.1.2.3
  @@ -142,12 +142,12 @@
        return(result);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        final ArrayList contents = getContents();
        final int n = contents.size();
        for (int i = 0; i < n; i++) {
            final Expression exp = (Expression)contents.get(i);
  -         if (!exp.typeCheck(stable).identicalTo(Type.String)) {
  +         if (!exp.typeCheck(ccontext).identicalTo(Type.String)) {
                contents.set(i, new CastExpr(exp, Type.String));
            }
        }
  
  
  
  1.7.8.1.2.3 +6 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BinOpExpr.java
  
  Index: BinOpExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BinOpExpr.java,v
  retrieving revision 1.7.8.1.2.2
  retrieving revision 1.7.8.1.2.3
  diff -u -r1.7.8.1.2.2 -r1.7.8.1.2.3
  --- BinOpExpr.java    13 Jan 2003 22:02:51 -0000      1.7.8.1.2.2
  +++ BinOpExpr.java    15 Jan 2003 14:43:04 -0000      1.7.8.1.2.3
  @@ -97,12 +97,12 @@
        return false;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type tleft = _left.typeCheck(stable);
  -     final Type tright = _right.typeCheck(stable);
  -     final MethodType ptype = lookupPrimop(stable, Ops[_op],
  -                                           new MethodType(Type.Void,
  -                                                          tleft, tright));
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type tleft = _left.typeCheck(ccontext);
  +     final Type tright = _right.typeCheck(ccontext);
  +     final MethodType ptype = lookupPrimop(getStaticContext(), Ops[_op],
  +            new MethodType(Type.Void, tleft, tright));
  +
        if (ptype != null) {
            final Type arg1 = (Type) ptype.argsType().get(0);
            if (!arg1.identicalTo(tleft)) {
  
  
  
  1.3.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanCall.java
  
  Index: BooleanCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanCall.java,v
  retrieving revision 1.3.8.1.2.1
  retrieving revision 1.3.8.1.2.2
  diff -u -r1.3.8.1.2.1 -r1.3.8.1.2.2
  --- BooleanCall.java  10 Jan 2003 16:50:38 -0000      1.3.8.1.2.1
  +++ BooleanCall.java  15 Jan 2003 14:43:04 -0000      1.3.8.1.2.2
  @@ -77,8 +77,8 @@
        _arg = argument(0);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _arg.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _arg.typeCheck(ccontext);
        return _type = Type.Boolean;
       }
   
  
  
  
  1.3.8.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanExpr.java
  
  Index: BooleanExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanExpr.java,v
  retrieving revision 1.3.8.1
  retrieving revision 1.3.8.1.2.1
  diff -u -r1.3.8.1 -r1.3.8.1.2.1
  --- BooleanExpr.java  14 Aug 2002 19:21:32 -0000      1.3.8.1
  +++ BooleanExpr.java  15 Jan 2003 14:43:04 -0000      1.3.8.1.2.1
  @@ -78,7 +78,7 @@
        _value = value;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        _type = Type.Boolean;
        return _type;
       }
  
  
  
  1.10.2.1.2.2 +4 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CallTemplate.java
  
  Index: CallTemplate.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CallTemplate.java,v
  retrieving revision 1.10.2.1.2.1
  retrieving revision 1.10.2.1.2.2
  diff -u -r1.10.2.1.2.1 -r1.10.2.1.2.2
  --- CallTemplate.java 13 Jan 2003 22:02:51 -0000      1.10.2.1.2.1
  +++ CallTemplate.java 15 Jan 2003 14:43:04 -0000      1.10.2.1.2.2
  @@ -88,10 +88,11 @@
       /**
        * Verify that a template with this name exists.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Template template = stable.lookupTemplate(_name);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Template template = getStaticContext().getTemplate(_name);
  +
        if (template != null) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
        else {
            ErrorMsg err = new ErrorMsg(ErrorMsg.TEMPLATE_UNDEF_ERR,_name,this);
  
  
  
  1.14.2.1.2.4 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CastExpr.java
  
  Index: CastExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CastExpr.java,v
  retrieving revision 1.14.2.1.2.3
  retrieving revision 1.14.2.1.2.4
  diff -u -r1.14.2.1.2.3 -r1.14.2.1.2.4
  --- CastExpr.java     13 Jan 2003 22:02:51 -0000      1.14.2.1.2.3
  +++ CastExpr.java     15 Jan 2003 14:43:04 -0000      1.14.2.1.2.4
  @@ -165,7 +165,7 @@
        // check if conversion is valid
        setParent(left.getParent());
        left.setParent(this);
  -     typeCheck(left.getParser().getSymbolTable());
  +     typeCheck(getCompilerContext());
       }
   
       public Expression getExpr() {
  @@ -194,10 +194,10 @@
        * type checking, but typeCheck() is usually not called on them.
        * As a result, this method is called from the constructor.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        Type tleft = _left.getType();
        if (tleft == null) {
  -         tleft = _left.typeCheck(stable);
  +         tleft = _left.typeCheck(ccontext);
        }
        if (tleft instanceof NodeType) {
            tleft = Type.Node;  // multiple instances
  
  
  
  1.6.8.1.2.3 +1 -1      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Choose.java
  
  Index: Choose.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Choose.java,v
  retrieving revision 1.6.8.1.2.2
  retrieving revision 1.6.8.1.2.3
  diff -u -r1.6.8.1.2.2 -r1.6.8.1.2.3
  --- Choose.java       13 Jan 2003 22:02:51 -0000      1.6.8.1.2.2
  +++ Choose.java       15 Jan 2003 14:43:04 -0000      1.6.8.1.2.3
  @@ -142,7 +142,7 @@
            if (test instanceof FunctionCall) {
                FunctionCall call = (FunctionCall)test;
                try {
  -                 Type type = call.typeCheck(getParser().getSymbolTable());
  +                 Type type = call.typeCheck(getCompilerContext());
                    if (type != Type.Boolean) {
                        test._falseList.add(il.append(new IFEQ(null)));
                    }
  
  
  
  1.4.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Comment.java
  
  Index: Comment.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Comment.java,v
  retrieving revision 1.4.8.1.2.2
  retrieving revision 1.4.8.1.2.3
  diff -u -r1.4.8.1.2.2 -r1.4.8.1.2.3
  --- Comment.java      13 Jan 2003 22:02:51 -0000      1.4.8.1.2.2
  +++ Comment.java      15 Jan 2003 14:43:04 -0000      1.4.8.1.2.3
  @@ -84,8 +84,8 @@
        parseContents(ccontext);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     typeCheckContents(ccontext);
        return Type.String;
       }
   
  
  
  
  1.1.2.2   +6 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/CompilerContext.java
  
  Index: CompilerContext.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/CompilerContext.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- CompilerContext.java      13 Jan 2003 22:02:51 -0000      1.1.2.1
  +++ CompilerContext.java      15 Jan 2003 14:43:04 -0000      1.1.2.2
  @@ -88,5 +88,11 @@
        * codemodel package.
        */
       public CmMethodDecl getCurrentMethod();
  +
  +    /**
  +     * Returns a fresh namespace prefix (used by xsl:attribute and
  +     * xsl:element).
  +     */
  +    public String generateNamespacePrefix();
   }
   
  
  
  
  1.1.2.2   +10 -0     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/CompilerContextImpl.java
  
  Index: CompilerContextImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/CompilerContextImpl.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- CompilerContextImpl.java  13 Jan 2003 22:02:51 -0000      1.1.2.1
  +++ CompilerContextImpl.java  15 Jan 2003 14:43:04 -0000      1.1.2.2
  @@ -169,5 +169,15 @@
       public void setCurrentMethod(CmMethodDecl currentMethod) {
           _currentMethod = currentMethod;
       }
  +
  +    /**
  +     * This is used for xsl:attribute elements that have a "namespace"
  +     * attribute that is currently not defined using xmlns:
  +     */
  +    private int _nsCounter = 0;
  +
  +    public String generateNamespacePrefix() {
  +        return new String("ns" + _nsCounter++);
  +    }
   }
   
  
  
  
  1.4.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ConcatCall.java
  
  Index: ConcatCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ConcatCall.java,v
  retrieving revision 1.4.8.1.2.1
  retrieving revision 1.4.8.1.2.2
  diff -u -r1.4.8.1.2.1 -r1.4.8.1.2.2
  --- ConcatCall.java   10 Jan 2003 16:50:38 -0000      1.4.8.1.2.1
  +++ ConcatCall.java   15 Jan 2003 14:43:04 -0000      1.4.8.1.2.2
  @@ -75,10 +75,10 @@
        super(fname, arguments);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        for (int i = 0; i < argumentCount(); i++) {
            final Expression exp = argument(i);
  -         if (!exp.typeCheck(stable).identicalTo(Type.String)) {
  +         if (!exp.typeCheck(ccontext).identicalTo(Type.String)) {
                setArgument(i, new CastExpr(exp, Type.String));
            }
        }
  
  
  
  1.4.8.1.2.2 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ContainsCall.java
  
  Index: ContainsCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ContainsCall.java,v
  retrieving revision 1.4.8.1.2.1
  retrieving revision 1.4.8.1.2.2
  diff -u -r1.4.8.1.2.1 -r1.4.8.1.2.2
  --- ContainsCall.java 10 Jan 2003 16:50:38 -0000      1.4.8.1.2.1
  +++ ContainsCall.java 15 Jan 2003 14:43:04 -0000      1.4.8.1.2.2
  @@ -93,7 +93,7 @@
       /**
        * Type check the two parameters for this function
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Check that the function was passed exactly two arguments
        if (argumentCount() != 2) {
  @@ -102,13 +102,13 @@
   
        // The first argument must be a String, or cast to a String
        _base = argument(0);
  -     Type baseType = _base.typeCheck(stable);        
  +     Type baseType = _base.typeCheck(ccontext);      
        if (baseType != Type.String)
            _base = new CastExpr(_base, Type.String);
   
        // The second argument must also be a String, or cast to a String
        _token = argument(1);
  -     Type tokenType = _token.typeCheck(stable);      
  +     Type tokenType = _token.typeCheck(ccontext);    
        if (tokenType != Type.String)
            _token = new CastExpr(_token, Type.String);
   
  
  
  
  1.7.8.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Copy.java
  
  Index: Copy.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Copy.java,v
  retrieving revision 1.7.8.1.2.2
  retrieving revision 1.7.8.1.2.3
  diff -u -r1.7.8.1.2.2 -r1.7.8.1.2.3
  --- Copy.java 13 Jan 2003 22:02:51 -0000      1.7.8.1.2.2
  +++ Copy.java 15 Jan 2003 14:43:04 -0000      1.7.8.1.2.3
  @@ -87,11 +87,11 @@
        parseContents(ccontext);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_useSets != null) {
  -         _useSets.typeCheck(stable);
  +         _useSets.typeCheck(ccontext);
        }
  -     typeCheckContents(stable);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.10.8.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CopyOf.java
  
  Index: CopyOf.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CopyOf.java,v
  retrieving revision 1.10.8.1.2.1
  retrieving revision 1.10.8.1.2.2
  diff -u -r1.10.8.1.2.1 -r1.10.8.1.2.2
  --- CopyOf.java       13 Jan 2003 22:02:51 -0000      1.10.8.1.2.1
  +++ CopyOf.java       15 Jan 2003 14:43:04 -0000      1.10.8.1.2.2
  @@ -86,8 +86,8 @@
           }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type tselect = _select.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type tselect = _select.typeCheck(ccontext);
        if (tselect instanceof NodeType ||
            tselect instanceof NodeSetType ||
            tselect instanceof ReferenceType ||
  
  
  
  1.9.2.1.2.2 +6 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DecimalFormatting.java
  
  Index: DecimalFormatting.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DecimalFormatting.java,v
  retrieving revision 1.9.2.1.2.1
  retrieving revision 1.9.2.1.2.2
  diff -u -r1.9.2.1.2.1 -r1.9.2.1.2.2
  --- DecimalFormatting.java    13 Jan 2003 22:02:51 -0000      1.9.2.1.2.1
  +++ DecimalFormatting.java    15 Jan 2003 14:43:04 -0000      1.9.2.1.2.2
  @@ -89,7 +89,7 @@
       /**
        * No type check needed for the <xsl:decimal-formatting/> element
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;
       }
   
  @@ -105,14 +105,15 @@
            _name = parser.getQNameIgnoreDefaultNs(EMPTYSTRING);
        }
   
  -     // Check if a set of symbols has already been registered under this name
  -     SymbolTable stable = parser.getSymbolTable();
  -     if (stable.getDecimalFormatting(_name) != null) {
  +     // Check if a set of symbols has already been registered 
  +     // under this name
  +     StaticContextImpl scontext = getStaticContext();
  +     if (scontext.getDecimalFormatting(_name) != null) {
            reportWarning(this, parser, ErrorMsg.SYMBOLS_REDEF_ERR,
                _name.toString());
        }
        else {
  -         stable.addDecimalFormatting(_name, this);
  +         scontext.addDecimalFormatting(_name, this);
        }
       }
   
  
  
  
  1.13.2.1.2.2 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DocumentCall.java
  
  Index: DocumentCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DocumentCall.java,v
  retrieving revision 1.13.2.1.2.1
  retrieving revision 1.13.2.1.2.2
  diff -u -r1.13.2.1.2.1 -r1.13.2.1.2.2
  --- DocumentCall.java 10 Jan 2003 16:50:39 -0000      1.13.2.1.2.1
  +++ DocumentCall.java 15 Jan 2003 14:43:04 -0000      1.13.2.1.2.2
  @@ -90,7 +90,7 @@
        * argument can be any type (we must cast it to a string) and contains 
the
        * URI of the document
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // At least one argument - two at most
        final int ac = argumentCount();
        if ((ac < 1) || (ac > 2)) {
  @@ -112,7 +112,7 @@
            }
        }
   
  -     _uriType = _uri.typeCheck(stable);
  +     _uriType = _uri.typeCheck(ccontext);
        if ((_uriType != Type.NodeSet) && (_uriType != Type.String)) {
            _uri = new CastExpr(_uri, Type.String);
        }
  @@ -120,7 +120,7 @@
        // Parse the second argument - the document URI base
        if (ac == 2) {
            _base = argument(1);
  -         final Type baseType = _base.typeCheck(stable);
  +         final Type baseType = _base.typeCheck(ccontext);
            
            if (baseType.identicalTo(Type.Node)) {
                _base = new CastExpr(_base, Type.NodeSet);
  
  
  
  1.7.2.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ElementAvailableCall.java
  
  Index: ElementAvailableCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ElementAvailableCall.java,v
  retrieving revision 1.7.2.1.2.2
  retrieving revision 1.7.2.1.2.3
  diff -u -r1.7.2.1.2.2 -r1.7.2.1.2.3
  --- ElementAvailableCall.java 10 Jan 2003 16:50:39 -0000      1.7.2.1.2.2
  +++ ElementAvailableCall.java 15 Jan 2003 14:43:04 -0000      1.7.2.1.2.3
  @@ -78,7 +78,7 @@
       /**
        * Force the argument to this function to be a literal string.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (argument() instanceof LiteralExpr) {
            return _type = Type.Boolean;
        }
  
  
  
  1.9.2.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java
  
  Index: EqualityExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java,v
  retrieving revision 1.9.2.1.2.2
  retrieving revision 1.9.2.1.2.3
  diff -u -r1.9.2.1.2.2 -r1.9.2.1.2.3
  --- EqualityExpr.java 13 Jan 2003 22:02:51 -0000      1.9.2.1.2.2
  +++ EqualityExpr.java 15 Jan 2003 14:43:04 -0000      1.9.2.1.2.3
  @@ -123,9 +123,9 @@
       /**
        * Typing rules: see XSLT Reference by M. Kay page 345.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type tleft = _left.typeCheck(stable);
  -     final Type tright = _right.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type tleft = _left.typeCheck(ccontext);
  +     final Type tright = _right.typeCheck(ccontext);
   
        if (tleft.isSimple() && tright.isSimple()) {
            if (tleft != tright) {
  
  
  
  1.15.2.1.2.3 +20 -18    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Expression.java
  
  Index: Expression.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Expression.java,v
  retrieving revision 1.15.2.1.2.2
  retrieving revision 1.15.2.1.2.3
  diff -u -r1.15.2.1.2.2 -r1.15.2.1.2.3
  --- Expression.java   10 Jan 2003 16:50:39 -0000      1.15.2.1.2.2
  +++ Expression.java   15 Jan 2003 14:43:04 -0000      1.15.2.1.2.3
  @@ -75,7 +75,7 @@
   
   abstract class Expression extends SyntaxTreeNode {
       /**
  -     * The type of this expression. It is set after calling 
  +     * The type of this expression. It is set after calling
        * <code>typeCheck()</code>.
        */
       protected Type _type;
  @@ -109,9 +109,9 @@
       public boolean hasLastCall() {
        return false;
       }
  -             
  +
       /**
  -     * Returns an object representing the compile-time evaluation 
  +     * Returns an object representing the compile-time evaluation
        * of an expression. We are only using this for function-available
        * and element-available at this time.
        */
  @@ -122,8 +122,8 @@
       /**
        * Type check all the children of this node.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     return typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     return typeCheckContents(ccontext);
       }
   
       /**
  @@ -134,7 +134,7 @@
                                    getClass(), this);
        getParser().reportError(FATAL, msg);
       }
  -     
  +
       /**
        * Translate this node into a fresh instruction list.
        * The original instruction list is saved and restored.
  @@ -163,7 +163,7 @@
        * Expects an object on the stack and if this object can be proven
        * to be a node iterator then the iterator is reset or started
        * depending on the type of this expression.
  -     * If this expression is a var reference then the iterator 
  +     * If this expression is a var reference then the iterator
        * is reset, otherwise it is started.
        */
       public void startResetIterator(ClassGenerator classGen,
  @@ -187,7 +187,7 @@
       }
   
       /**
  -     * Synthesize a boolean expression, i.e., either push a 0 or 1 onto the 
  +     * Synthesize a boolean expression, i.e., either push a 0 or 1 onto the
        * operand stack for the next statement to succeed. Returns the handle
        * of the instruction to be backpatched.
        */
  @@ -223,16 +223,18 @@
       }
   
       /**
  -     * Search for a primop in the symbol table that matches the method type 
  +     * Search for a primop in the symbol table that matches the method type
        * <code>ctype</code>. Two methods match if they have the same arity.
        * If a primop is overloaded then the "closest match" is returned. The
  -     * first entry in the vector of primops that has the right arity is 
  +     * first entry in the vector of primops that has the right arity is
        * considered to be the default one.
        */
  -    public MethodType lookupPrimop(SymbolTable stable, String op,
  -                                MethodType ctype) {
  +    public MethodType lookupPrimop(StaticContext scontext, String op,
  +        MethodType ctype)
  +    {
        MethodType result = null;
  -     final ArrayList primop = stable.lookupPrimop(op);
  +     final ArrayList primop = scontext.getPrimop(op);
  +
        if (primop != null) {
            final int n = primop.size();
            int minDistance = Integer.MAX_VALUE;
  @@ -242,7 +244,7 @@
                if (ptype.argsCount() != ctype.argsCount()) {
                    continue;
                }
  -                             
  +
                // The first method with the right arity is the default
                if (result == null) {
                    result = ptype;             // default method
  @@ -254,8 +256,8 @@
                    minDistance = distance;
                    result = ptype;
                }
  -         }           
  -     }       
  +         }
  +     }
        return result;
  -    }        
  +    }
   }
  
  
  
  1.4.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Fallback.java
  
  Index: Fallback.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Fallback.java,v
  retrieving revision 1.4.8.1.2.2
  retrieving revision 1.4.8.1.2.3
  diff -u -r1.4.8.1.2.2 -r1.4.8.1.2.3
  --- Fallback.java     13 Jan 2003 22:02:51 -0000      1.4.8.1.2.2
  +++ Fallback.java     15 Jan 2003 14:43:04 -0000      1.4.8.1.2.3
  @@ -81,9 +81,9 @@
       /**
        * This element never produces any data on the stack
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_active) {
  -         return(typeCheckContents(stable));
  +         return(typeCheckContents(ccontext));
        }
        else {
            return Type.Void;
  
  
  
  1.6.8.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilterExpr.java
  
  Index: FilterExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilterExpr.java,v
  retrieving revision 1.6.8.1.2.2
  retrieving revision 1.6.8.1.2.3
  diff -u -r1.6.8.1.2.2 -r1.6.8.1.2.3
  --- FilterExpr.java   13 Jan 2003 22:02:51 -0000      1.6.8.1.2.2
  +++ FilterExpr.java   15 Jan 2003 14:43:04 -0000      1.6.8.1.2.3
  @@ -107,8 +107,8 @@
        * cast to node-set only if it is of reference type. This type coercion
        * is needed for expressions like $x where $x is a parameter reference.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     Type ptype = _primary.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     Type ptype = _primary.typeCheck(ccontext);
   
        if (ptype instanceof NodeSetType == false) {
            if (ptype instanceof ReferenceType)  {
  @@ -122,7 +122,7 @@
        int n = _predicates.size();
        for (int i = 0; i < n; i++) {
            Expression pred = (Expression)_predicates.get(i);
  -         pred.typeCheck(stable);
  +         pred.typeCheck(ccontext);
        }
        return _type = Type.NodeSet;
       }
  
  
  
  1.10.2.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilterParentPath.java
  
  Index: FilterParentPath.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilterParentPath.java,v
  retrieving revision 1.10.2.1.2.1
  retrieving revision 1.10.2.1.2.2
  diff -u -r1.10.2.1.2.1 -r1.10.2.1.2.2
  --- FilterParentPath.java     13 Jan 2003 22:02:51 -0000      1.10.2.1.2.1
  +++ FilterParentPath.java     15 Jan 2003 14:43:04 -0000      1.10.2.1.2.2
  @@ -93,8 +93,8 @@
        * cast to node-set only if it is of reference type. This type coercion 
is
        * needed for expressions like $x/LINE where $x is a parameter reference.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type ftype = _filterExpr.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type ftype = _filterExpr.typeCheck(ccontext);
        if (ftype instanceof NodeSetType == false) {
            if (ftype instanceof ReferenceType)  {
                _filterExpr = new CastExpr(_filterExpr, Type.NodeSet);
  @@ -113,7 +113,7 @@
        }
   
        // Wrap single node path in a node set
  -     final Type ptype = _path.typeCheck(stable);
  +     final Type ptype = _path.typeCheck(ccontext);
        if (!(ptype instanceof NodeSetType)) {
            _path = new CastExpr(_path, Type.NodeSet);
        }
  
  
  
  1.3.8.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilteredAbsoluteLocationPath.java
  
  Index: FilteredAbsoluteLocationPath.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FilteredAbsoluteLocationPath.java,v
  retrieving revision 1.3.8.1.2.1
  retrieving revision 1.3.8.1.2.2
  diff -u -r1.3.8.1.2.1 -r1.3.8.1.2.2
  --- FilteredAbsoluteLocationPath.java 13 Jan 2003 22:02:51 -0000      
1.3.8.1.2.1
  +++ FilteredAbsoluteLocationPath.java 15 Jan 2003 14:43:04 -0000      
1.3.8.1.2.2
  @@ -89,9 +89,9 @@
            (_path != null ? _path.toString() : "null") + ')';
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_path != null) {
  -         final Type ptype = _path.typeCheck(stable);
  +         final Type ptype = _path.typeCheck(ccontext);
            if (ptype instanceof NodeType) {            // promote to node-set
                _path = new CastExpr(_path, Type.NodeSet);
            }
  
  
  
  1.12.8.1.2.4 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ForEach.java
  
  Index: ForEach.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ForEach.java,v
  retrieving revision 1.12.8.1.2.3
  retrieving revision 1.12.8.1.2.4
  diff -u -r1.12.8.1.2.3 -r1.12.8.1.2.4
  --- ForEach.java      13 Jan 2003 22:02:51 -0000      1.12.8.1.2.3
  +++ ForEach.java      15 Jan 2003 14:43:04 -0000      1.12.8.1.2.4
  @@ -99,16 +99,16 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _type = _select.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _type = _select.typeCheck(ccontext);
   
        if (_type instanceof ReferenceType || _type instanceof NodeType) {
            _select = new CastExpr(_select, Type.NodeSet);
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
            return Type.Void;
        }
        if (_type instanceof NodeSetType||_type instanceof ResultTreeType) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
            return Type.Void;
        }
        throw new TypeCheckError(this);
  
  
  
  1.8.2.1.2.2 +5 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FormatNumberCall.java
  
  Index: FormatNumberCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FormatNumberCall.java,v
  retrieving revision 1.8.2.1.2.1
  retrieving revision 1.8.2.1.2.2
  diff -u -r1.8.2.1.2.1 -r1.8.2.1.2.2
  --- FormatNumberCall.java     10 Jan 2003 16:50:39 -0000      1.8.2.1.2.1
  +++ FormatNumberCall.java     15 Jan 2003 14:43:04 -0000      1.8.2.1.2.2
  @@ -83,21 +83,21 @@
        _name = argumentCount() == 3 ? argument(2) : null;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Inform stylesheet to instantiate a DecimalFormat object
        getStylesheet().numberFormattingUsed();
   
  -     final Type tvalue = _value.typeCheck(stable);
  +     final Type tvalue = _value.typeCheck(ccontext);
        if (tvalue instanceof RealType == false) {
            _value = new CastExpr(_value, Type.Real);
        }
  -     final Type tformat = _format.typeCheck(stable);
  +     final Type tformat = _format.typeCheck(ccontext);
        if (tformat instanceof StringType == false) {
            _format = new CastExpr(_format, Type.String);
        }
        if (argumentCount() == 3) {
  -         final Type tname = _name.typeCheck(stable);
  +         final Type tname = _name.typeCheck(ccontext);
   
            if (_name instanceof LiteralExpr) {
                final LiteralExpr literal = (LiteralExpr) _name;
  
  
  
  1.1.2.3   +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ForwardPositionExpr.java
  
  Index: ForwardPositionExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ForwardPositionExpr.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- ForwardPositionExpr.java  13 Jan 2003 22:02:51 -0000      1.1.2.2
  +++ ForwardPositionExpr.java  15 Jan 2003 14:43:04 -0000      1.1.2.3
  @@ -77,8 +77,8 @@
        return "forward-position-expr(" + _expr + ")";
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     return (_type = _expr.typeCheck(stable));
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     return (_type = _expr.typeCheck(ccontext));
       }
   
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  
  
  
  1.11.2.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java
  
  Index: FunctionAvailableCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java,v
  retrieving revision 1.11.2.1.2.2
  retrieving revision 1.11.2.1.2.3
  diff -u -r1.11.2.1.2.2 -r1.11.2.1.2.3
  --- FunctionAvailableCall.java        10 Jan 2003 16:50:39 -0000      
1.11.2.1.2.2
  +++ FunctionAvailableCall.java        15 Jan 2003 14:43:04 -0000      
1.11.2.1.2.3
  @@ -104,7 +104,7 @@
        * Argument of function-available call must be literal, typecheck
        * returns the type of function-available to be boolean.  
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_type != null) {
           return _type;
        }
  
  
  
  1.22.2.1.2.4 +24 -18    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java
  
  Index: FunctionCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java,v
  retrieving revision 1.22.2.1.2.3
  retrieving revision 1.22.2.1.2.4
  diff -u -r1.22.2.1.2.3 -r1.22.2.1.2.4
  --- FunctionCall.java 13 Jan 2003 22:02:51 -0000      1.22.2.1.2.3
  +++ FunctionCall.java 15 Jan 2003 14:43:04 -0000      1.22.2.1.2.4
  @@ -338,7 +338,7 @@
        * Type check a function call. Since different type conversions apply,
        * type checking is different for standard and external (Java) functions.
        */
  -    public Type typeCheck(SymbolTable stable)
  +    public Type typeCheck(CompilerContext ccontext)
        throws TypeCheckError
       {
           if (_type != null) return _type;
  @@ -348,10 +348,10 @@
   
        if (isExtension()) {
            _fname = new QName(null, null, local);
  -         return typeCheckStandard(stable);
  +         return typeCheckStandard(ccontext);
        }
        else if (isStandard()) {
  -         return typeCheckStandard(stable);
  +         return typeCheckStandard(ccontext);
        }
        // Handle extension functions (they all have a namespace)
        else {
  @@ -393,13 +393,13 @@
                    String extFunction = 
(String)_extensionFunctionTable.get(namespace + ":" + local);
                    if (extFunction != null) {
                        _fname = new QName(null, null, extFunction);
  -                     return typeCheckStandard(stable);
  +                     return typeCheckStandard(ccontext);
                    }
                    else
                        _fname = new QName(namespace, null, local);
                }
   
  -             return typeCheckExternal(stable);
  +             return typeCheckExternal(ccontext);
            }
            catch (TypeCheckError e) {
                ErrorMsg errorMsg = e.getErrorMsg();
  @@ -418,14 +418,16 @@
        * If as a result of the insertion of a CastExpr a type check error is
        * thrown, then catch it and re-throw it with a new "this".
        */
  -    public Type typeCheckStandard(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheckStandard(CompilerContext ccontext)
  +        throws TypeCheckError
  +    {
        _fname.clearNamespace();        // HACK!!!
   
        final int n = _arguments.size();
  -     final ArrayList argsType = typeCheckArgs(stable);
  +     final ArrayList argsType = typeCheckArgs(ccontext);
        final MethodType args = new MethodType(Type.Void, argsType);
        final MethodType ptype =
  -         lookupPrimop(stable, _fname.getLocalPart(), args);
  +         lookupPrimop(getStaticContext(), _fname.getLocalPart(), args);
   
        if (ptype != null) {
            for (int i = 0; i < n; i++) {
  @@ -446,9 +448,9 @@
        throw new TypeCheckError(this);
       }
   
  -
  -
  -    public Type typeCheckConstructor(SymbolTable stable) throws 
TypeCheckError{
  +    public Type typeCheckConstructor(CompilerContext ccontext)
  +        throws TypeCheckError
  +    {
           final ArrayList constructors = findConstructors();
        if (constructors == null) {
               // Constructor not found in this class
  @@ -459,7 +461,7 @@
   
        final int nConstructors = constructors.size();
        final int nArgs = _arguments.size();
  -     final ArrayList argsType = typeCheckArgs(stable);
  +     final ArrayList argsType = typeCheckArgs(ccontext);
   
        // Try all constructors
        int bestConstrDistance = Integer.MAX_VALUE;
  @@ -514,13 +516,15 @@
        * Every method of name <code>_fname</code> is inspected
        * as a possible candidate.
        */
  -    public Type typeCheckExternal(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheckExternal(CompilerContext ccontext)
  +        throws TypeCheckError
  +    {
        int nArgs = _arguments.size();
        final String name = _fname.getLocalPart();
   
        // check if function is a contructor 'new'
        if (_fname.getLocalPart().equals("new")) {
  -         return typeCheckConstructor(stable);
  +         return typeCheckConstructor(ccontext);
        }
        // check if we are calling an instance method
        else {
  @@ -535,7 +539,7 @@
                    hasThisArgument = true;
   
                Expression firstArg = (Expression)_arguments.get(0);
  -             Type firstArgType = (Type)firstArg.typeCheck(stable);
  +             Type firstArgType = (Type)firstArg.typeCheck(ccontext);
   
                if (_namespace_format == NAMESPACE_FORMAT_CLASS
                    && firstArgType instanceof ObjectType
  @@ -579,7 +583,7 @@
   
        Class extType = null;
        final int nMethods = methods.size();
  -     final ArrayList argsType = typeCheckArgs(stable);
  +     final ArrayList argsType = typeCheckArgs(ccontext);
   
        // Try all methods to identify the best fit
        int bestMethodDistance  = Integer.MAX_VALUE;
  @@ -662,12 +666,14 @@
       /**
        * Type check the actual arguments of this function call.
        */
  -    public ArrayList typeCheckArgs(SymbolTable stable) throws TypeCheckError 
{
  +    public ArrayList typeCheckArgs(CompilerContext ccontext)
  +        throws TypeCheckError
  +    {
        final ArrayList result = new ArrayList();
        final Iterator e = _arguments.iterator();
        while (e.hasNext()) {
            final Expression exp = (Expression)e.next();
  -         result.add(exp.typeCheck(stable));
  +         result.add(exp.typeCheck(ccontext));
        }
        return result;
       }
  
  
  
  1.6.8.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/IdKeyPattern.java
  
  Index: IdKeyPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/IdKeyPattern.java,v
  retrieving revision 1.6.8.1
  retrieving revision 1.6.8.1.2.1
  diff -u -r1.6.8.1 -r1.6.8.1.2.1
  --- IdKeyPattern.java 14 Aug 2002 19:21:32 -0000      1.6.8.1
  +++ IdKeyPattern.java 15 Jan 2003 14:43:04 -0000      1.6.8.1.2.1
  @@ -82,7 +82,7 @@
        return(_index);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.NodeSet;
       }
       
  
  
  
  1.10.2.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/If.java
  
  Index: If.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/If.java,v
  retrieving revision 1.10.2.1.2.2
  retrieving revision 1.10.2.1.2.3
  diff -u -r1.10.2.1.2.2 -r1.10.2.1.2.3
  --- If.java   13 Jan 2003 22:02:52 -0000      1.10.2.1.2.2
  +++ If.java   15 Jan 2003 14:43:04 -0000      1.10.2.1.2.3
  @@ -106,14 +106,14 @@
        * Type-check the "test" expression and contents of this element.
        * The contents will be ignored if we know the test will always fail.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // Type-check the "test" expression
  -     if (_test.typeCheck(stable) instanceof BooleanType == false) {
  +     if (_test.typeCheck(ccontext) instanceof BooleanType == false) {
            _test = new CastExpr(_test, Type.Boolean);
        }
        // Type check the element contents
        if (!_ignore) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
        return Type.Void;
       }
  
  
  
  1.16.2.1.2.4 +1 -1      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Import.java
  
  Index: Import.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Import.java,v
  retrieving revision 1.16.2.1.2.3
  retrieving revision 1.16.2.1.2.4
  diff -u -r1.16.2.1.2.3 -r1.16.2.1.2.4
  --- Import.java       13 Jan 2003 22:02:52 -0000      1.16.2.1.2.3
  +++ Import.java       15 Jan 2003 14:43:04 -0000      1.16.2.1.2.4
  @@ -168,7 +168,7 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;
       }
   
  
  
  
  1.19.2.1.2.4 +1 -1      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Include.java
  
  Index: Include.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Include.java,v
  retrieving revision 1.19.2.1.2.3
  retrieving revision 1.19.2.1.2.4
  diff -u -r1.19.2.1.2.3 -r1.19.2.1.2.4
  --- Include.java      13 Jan 2003 22:02:52 -0000      1.19.2.1.2.3
  +++ Include.java      15 Jan 2003 14:43:04 -0000      1.19.2.1.2.4
  @@ -203,7 +203,7 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;
       }
   
  
  
  
  1.2.12.1.2.1 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Instruction.java
  
  Index: Instruction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Instruction.java,v
  retrieving revision 1.2.12.1
  retrieving revision 1.2.12.1.2.1
  diff -u -r1.2.12.1 -r1.2.12.1.2.1
  --- Instruction.java  14 Aug 2002 19:21:32 -0000      1.2.12.1
  +++ Instruction.java  15 Jan 2003 14:43:04 -0000      1.2.12.1.2.1
  @@ -69,8 +69,8 @@
       /**
        * Type check all the children of this node.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     return typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     return typeCheckContents(ccontext);
       }
   
       /**
  
  
  
  1.2.8.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/IntExpr.java
  
  Index: IntExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/IntExpr.java,v
  retrieving revision 1.2.8.1
  retrieving revision 1.2.8.1.2.1
  diff -u -r1.2.8.1 -r1.2.8.1.2.1
  --- IntExpr.java      14 Aug 2002 19:21:32 -0000      1.2.8.1
  +++ IntExpr.java      15 Jan 2003 14:43:04 -0000      1.2.8.1.2.1
  @@ -74,7 +74,7 @@
           _value = value;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return _type = Type.Int;
       }
   
  
  
  
  1.11.2.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java
  
  Index: Key.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java,v
  retrieving revision 1.11.2.1.2.2
  retrieving revision 1.11.2.1.2.3
  diff -u -r1.11.2.1.2.2 -r1.11.2.1.2.3
  --- Key.java  13 Jan 2003 22:02:52 -0000      1.11.2.1.2.2
  +++ Key.java  15 Jan 2003 14:43:04 -0000      1.11.2.1.2.3
  @@ -131,12 +131,12 @@
        return _name.toString();
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // Type check match pattern
  -     _match.typeCheck(stable);
  +     _match.typeCheck(ccontext);
   
        // Cast node values to string values (except for nodesets)
  -     _useType = _use.typeCheck(stable);
  +     _useType = _use.typeCheck(ccontext);
        if (_useType instanceof StringType == false &&
            _useType instanceof NodeSetType == false)
        {
  
  
  
  1.8.2.1.2.3 +5 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/KeyCall.java
  
  Index: KeyCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/KeyCall.java,v
  retrieving revision 1.8.2.1.2.2
  retrieving revision 1.8.2.1.2.3
  diff -u -r1.8.2.1.2.2 -r1.8.2.1.2.3
  --- KeyCall.java      10 Jan 2003 16:50:40 -0000      1.8.2.1.2.2
  +++ KeyCall.java      15 Jan 2003 14:43:04 -0000      1.8.2.1.2.3
  @@ -127,13 +127,13 @@
        * @param stable The parser's symbol table
        * @throws TypeCheckError When the parameters have illegal type
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type returnType = super.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type returnType = super.typeCheck(ccontext);
   
        // Run type check on the key name (first argument) - must be a string,
        // and if it is not it must be converted to one using string() rules.
        if (_name != null) {
  -         final Type nameType = _name.typeCheck(stable);
  +         final Type nameType = _name.typeCheck(ccontext);
   
            if (_name instanceof LiteralExpr) {
                final LiteralExpr literal = (LiteralExpr) _name;
  @@ -152,7 +152,7 @@
        // this process (convert to string, then do lookup) should be applied
        // to every node in the set, and the result from all lookups should
        // be added to the resulting node-set.
  -     _valueType = _value.typeCheck(stable);
  +     _valueType = _value.typeCheck(ccontext);
   
        if (_valueType != Type.NodeSet && _valueType != Type.ResultTree
                && _valueType != Type.String)
  
  
  
  1.2.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LangCall.java
  
  Index: LangCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LangCall.java,v
  retrieving revision 1.2.8.1.2.1
  retrieving revision 1.2.8.1.2.2
  diff -u -r1.2.8.1.2.1 -r1.2.8.1.2.2
  --- LangCall.java     10 Jan 2003 16:50:40 -0000      1.2.8.1.2.1
  +++ LangCall.java     15 Jan 2003 14:43:04 -0000      1.2.8.1.2.2
  @@ -84,8 +84,8 @@
       /**
        *
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _langType = _lang.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _langType = _lang.typeCheck(ccontext);
        if (!(_langType instanceof StringType)) {
            _lang = new CastExpr(_lang, Type.String);
        }
  
  
  
  1.4.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralAttribute.java
  
  Index: LiteralAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralAttribute.java,v
  retrieving revision 1.4.8.1.2.1
  retrieving revision 1.4.8.1.2.2
  diff -u -r1.4.8.1.2.1 -r1.4.8.1.2.2
  --- LiteralAttribute.java     13 Jan 2003 22:02:52 -0000      1.4.8.1.2.1
  +++ LiteralAttribute.java     15 Jan 2003 14:43:04 -0000      1.4.8.1.2.2
  @@ -84,9 +84,9 @@
        _value = AttributeValue.create(this, value, parser);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _value.typeCheck(stable);
  -     typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _value.typeCheck(ccontext);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.18.2.1.2.3 +26 -25    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralElement.java
  
  Index: LiteralElement.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralElement.java,v
  retrieving revision 1.18.2.1.2.2
  retrieving revision 1.18.2.1.2.3
  diff -u -r1.18.2.1.2.2 -r1.18.2.1.2.3
  --- LiteralElement.java       13 Jan 2003 22:02:52 -0000      1.18.2.1.2.2
  +++ LiteralElement.java       15 Jan 2003 14:43:04 -0000      1.18.2.1.2.3
  @@ -107,14 +107,14 @@
        * this literal element and its attributes. The output must contain a
        * definition for each namespace, so we stuff them in a hashtable.
        */
  -    public void registerNamespace(String prefix, String uri,
  -                               SymbolTable stable, boolean declared) {
  +    public void registerNamespace(String prefix, String uri, boolean 
declared) {
  +     StaticContextImpl scontext = getStaticContext();
   
        // Check if the parent has a declaration for this namespace
        if (_literalElemParent != null) {
            final String parentUri = 
_literalElemParent.accessedNamespace(prefix);
            if (parentUri == null) {
  -             _literalElemParent.registerNamespace(prefix, uri, stable, 
declared);
  +             _literalElemParent.registerNamespace(prefix, uri, declared);
                return;
            }
            if (parentUri.equals(uri)) return;
  @@ -132,7 +132,7 @@
                    if (old.equals(uri))
                        return;
                    else
  -                     prefix = stable.generateNamespacePrefix();
  +                     prefix = getCompilerContext().generateNamespacePrefix();
                }
            }
        }
  @@ -147,21 +147,24 @@
        * the attributes of xsl:stylesheet. Also registers a QName to assure
        * that the output element contains the necessary namespace declarations.
        */
  -    private String translateQName(QName qname, SymbolTable stable) {
  +    private String translateQName(QName qname) {
        // Break up the QName and get prefix:localname strings
        String localname = qname.getLocalPart();
        String prefix = qname.getPrefix();
   
        // Treat default namespace as "" and not null
  -     if (prefix == null)
  +     if (prefix == null) {
            prefix = Constants.EMPTYSTRING;
  -     else if (prefix.equals(XMLNS_STRING))
  -         return(XMLNS_STRING);
  +     }
  +     else if (prefix.equals(XMLNS_STRING)) {
  +         return XMLNS_STRING;
  +     }
   
        // Check if we must translate the prefix
  -     final String alternative = stable.lookupPrefixAlias(prefix);
  +     StaticContextImpl scontext = getStaticContext();
  +     final String alternative = scontext.getPrefixAlias(prefix);
        if (alternative != null) {
  -         stable.excludeNamespaces(prefix);
  +         scontext.setExcludePrefixes(prefix);
            prefix = alternative;
        }
   
  @@ -170,7 +173,7 @@
        if (uri == null) return(localname);
   
        // Register the namespace as accessed
  -     registerNamespace(prefix, uri, stable, false);
  +     registerNamespace(prefix, uri, false);
   
        // Construct the new name for the element (may be unchanged)
        if (prefix != Constants.EMPTYSTRING)
  @@ -203,17 +206,17 @@
        * Type-check the contents of this element. The element itself does not
        * need any type checking as it leaves nothign on the JVM's stack.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // Type-check all attributes
        if (_attributeElements != null) {
            final int count = _attributeElements.size();
            for (int i = 0; i < count; i++) {
                SyntaxTreeNode node =
                    (SyntaxTreeNode)_attributeElements.get(i);
  -             node.typeCheck(stable);
  +             node.typeCheck(ccontext);
            }
        }
  -     typeCheckContents(stable);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  @@ -247,9 +250,7 @@
        */
       public void parse(CompilerContext ccontext) {
           final Parser parser = ccontext.getParser();
  -
  -     final SymbolTable stable = parser.getSymbolTable();
  -     stable.setCurrentNode(this);
  +     final StaticContextImpl scontext = getStaticContext();
   
        // Find the closest literal element ancestor (if there is one)
        SyntaxTreeNode _literalElemParent = getParent();
  @@ -261,7 +262,7 @@
            _literalElemParent = null;
        }
   
  -     _name = translateQName(_qname, stable);
  +     _name = translateQName(_qname);
   
        // Process all attributes and register all namespaces they use
        final int count = _attributes.getLength();
  @@ -278,11 +279,11 @@
            }
            // Handle xsl:extension-element-prefixes
            else if (qname == parser.getExtensionElementPrefixes()) {
  -             stable.excludeNamespaces(val);
  +             scontext.setExcludePrefixes(val);
            }
            // Handle xsl:exclude-result-prefixes
            else if (qname == parser.getExcludeResultPrefixes()) {
  -             stable.excludeNamespaces(val);
  +             scontext.setExcludePrefixes(val);
            }
            else {
                // Ignore special attributes (e.g. xmlns:prefix and xmlns)
  @@ -295,7 +296,7 @@
                }
   
                // Handle all other literal attributes
  -             final String name = translateQName(qname, stable);
  +             final String name = translateQName(qname);
                LiteralAttribute attr = new LiteralAttribute(name, val, parser);
                addAttribute(attr);
                attr.setParent(this);
  @@ -310,8 +311,8 @@
            final String prefix = (String)include.next();
            if (!prefix.equals("xml")) {
                final String uri = lookupNamespace(prefix);
  -             if (uri != null && !stable.isExcludedNamespace(uri)) {
  -                 registerNamespace(prefix, uri, stable, true);
  +             if (uri != null && !scontext.getExcludeUri(uri)) {
  +                 registerNamespace(prefix, uri, true);
                }
            }
        }
  @@ -325,11 +326,11 @@
   
            // Handle xsl:extension-element-prefixes
            if (qname == parser.getExtensionElementPrefixes()) {
  -             stable.unExcludeNamespaces(val);
  +             scontext.setUnexcludePrefixes(val);
            }
            // Handle xsl:exclude-result-prefixes
            else if (qname == parser.getExcludeResultPrefixes()) {
  -             stable.unExcludeNamespaces(val);
  +             scontext.setUnexcludePrefixes(val);
            }
        }
       }
  
  
  
  1.5.2.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralExpr.java
  
  Index: LiteralExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralExpr.java,v
  retrieving revision 1.5.2.1
  retrieving revision 1.5.2.1.2.1
  diff -u -r1.5.2.1 -r1.5.2.1.2.1
  --- LiteralExpr.java  14 Aug 2002 19:21:33 -0000      1.5.2.1
  +++ LiteralExpr.java  15 Jan 2003 14:43:04 -0000      1.5.2.1.2.1
  @@ -91,7 +91,7 @@
        _namespace = namespace.equals(Constants.EMPTYSTRING) ? null : namespace;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return _type = Type.String;
       }
   
  
  
  
  1.2.16.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LocationPathPattern.java
  
  Index: LocationPathPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LocationPathPattern.java,v
  retrieving revision 1.2.16.1.2.1
  retrieving revision 1.2.16.1.2.2
  diff -u -r1.2.16.1.2.1 -r1.2.16.1.2.2
  --- LocationPathPattern.java  2 Dec 2002 15:51:16 -0000       1.2.16.1.2.1
  +++ LocationPathPattern.java  15 Jan 2003 14:43:04 -0000      1.2.16.1.2.2
  @@ -74,7 +74,7 @@
       private double _priority = Double.NaN;
       private int _position = 0;
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;               // TODO
       }
   
  
  
  
  1.10.2.1.2.4 +5 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LogicalExpr.java
  
  Index: LogicalExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LogicalExpr.java,v
  retrieving revision 1.10.2.1.2.3
  retrieving revision 1.10.2.1.2.4
  diff -u -r1.10.2.1.2.3 -r1.10.2.1.2.4
  --- LogicalExpr.java  13 Jan 2003 22:02:52 -0000      1.10.2.1.2.3
  +++ LogicalExpr.java  15 Jan 2003 14:43:04 -0000      1.10.2.1.2.4
  @@ -141,14 +141,15 @@
       /**
        * Type-check this expression, and possibly child expressions.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // Get the left and right operand types
  -     Type tleft = _left.typeCheck(stable);
  -     Type tright = _right.typeCheck(stable);
  +     Type tleft = _left.typeCheck(ccontext);
  +     Type tright = _right.typeCheck(ccontext);
   
        // Check if the operator supports the two operand types
        MethodType wantType = new MethodType(Type.Void, tleft, tright);
  -     MethodType haveType = lookupPrimop(stable, Ops[_op], wantType);
  +     MethodType haveType =
  +            lookupPrimop(getStaticContext(), Ops[_op], wantType);
   
        // Yes, the operation is supported
        if (haveType != null) {
  
  
  
  1.6.8.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Message.java
  
  Index: Message.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Message.java,v
  retrieving revision 1.6.8.1.2.1
  retrieving revision 1.6.8.1.2.2
  diff -u -r1.6.8.1.2.1 -r1.6.8.1.2.2
  --- Message.java      13 Jan 2003 22:02:52 -0000      1.6.8.1.2.1
  +++ Message.java      15 Jan 2003 14:43:04 -0000      1.6.8.1.2.2
  @@ -82,8 +82,8 @@
        parseContents(ccontext);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.7.2.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NameBase.java
  
  Index: NameBase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NameBase.java,v
  retrieving revision 1.7.2.1.2.1
  retrieving revision 1.7.2.1.2.2
  diff -u -r1.7.2.1.2.1 -r1.7.2.1.2.2
  --- NameBase.java     10 Jan 2003 16:50:40 -0000      1.7.2.1.2.1
  +++ NameBase.java     15 Jan 2003 14:43:04 -0000      1.7.2.1.2.2
  @@ -94,7 +94,7 @@
        * Check that we either have no parameters or one parameter that is
        * either a node or a node-set.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Check the argument type (if any)
        switch(argumentCount()) {
  @@ -102,7 +102,7 @@
            _paramType = Type.Node;
            break;
        case 1:
  -         _paramType = _param.typeCheck(stable);
  +         _paramType = _param.typeCheck(ccontext);
            break;
        default:
            throw new TypeCheckError(this);
  
  
  
  1.4.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NamespaceAlias.java
  
  Index: NamespaceAlias.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NamespaceAlias.java,v
  retrieving revision 1.4.8.1.2.2
  retrieving revision 1.4.8.1.2.3
  diff -u -r1.4.8.1.2.2 -r1.4.8.1.2.3
  --- NamespaceAlias.java       13 Jan 2003 22:02:52 -0000      1.4.8.1.2.2
  +++ NamespaceAlias.java       15 Jan 2003 14:43:04 -0000      1.4.8.1.2.3
  @@ -84,10 +84,10 @@
           final Parser parser = ccontext.getParser();
        sPrefix = getAttribute("stylesheet-prefix");
        rPrefix = getAttribute("result-prefix");
  -     parser.getSymbolTable().addPrefixAlias(sPrefix,rPrefix);
  +     getStaticContext().addPrefixAlias(sPrefix, rPrefix);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;
       }
   
  
  
  
  1.9.2.1.2.4 +9 -9      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Number.java
  
  Index: Number.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Number.java,v
  retrieving revision 1.9.2.1.2.3
  retrieving revision 1.9.2.1.2.4
  diff -u -r1.9.2.1.2.3 -r1.9.2.1.2.4
  --- Number.java       13 Jan 2003 22:02:52 -0000      1.9.2.1.2.3
  +++ Number.java       15 Jan 2003 14:43:04 -0000      1.9.2.1.2.4
  @@ -198,33 +198,33 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_value != null) {
  -         Type tvalue = _value.typeCheck(stable);
  +         Type tvalue = _value.typeCheck(ccontext);
            if (tvalue instanceof RealType == false) {
                _value = new CastExpr(_value, Type.Real);
            }
        }
        if (_count != null) {
  -         _count.typeCheck(stable);
  +         _count.typeCheck(ccontext);
        }
        if (_from != null) {
  -         _from.typeCheck(stable);
  +         _from.typeCheck(ccontext);
        }
        if (_format != null) {
  -         _format.typeCheck(stable);
  +         _format.typeCheck(ccontext);
        }
        if (_lang != null) {
  -         _lang.typeCheck(stable);
  +         _lang.typeCheck(ccontext);
        }
        if (_letterValue != null) {
  -         _letterValue.typeCheck(stable);
  +         _letterValue.typeCheck(ccontext);
        }
        if (_groupingSeparator != null) {
  -         _groupingSeparator.typeCheck(stable);
  +         _groupingSeparator.typeCheck(ccontext);
        }
        if (_groupingSize != null) {
  -         _groupingSize.typeCheck(stable);
  +         _groupingSize.typeCheck(ccontext);
        }
        return Type.Void;
       }
  
  
  
  1.2.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NumberCall.java
  
  Index: NumberCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/NumberCall.java,v
  retrieving revision 1.2.8.1.2.1
  retrieving revision 1.2.8.1.2.2
  diff -u -r1.2.8.1.2.1 -r1.2.8.1.2.2
  --- NumberCall.java   10 Jan 2003 16:50:41 -0000      1.2.8.1.2.1
  +++ NumberCall.java   15 Jan 2003 14:43:04 -0000      1.2.8.1.2.2
  @@ -74,9 +74,9 @@
        super(fname, arguments);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (argumentCount() > 0) {
  -         argument().typeCheck(stable);
  +         argument().typeCheck(ccontext);
        }
        return _type = Type.Real;
       }
  
  
  
  1.3.12.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Otherwise.java
  
  Index: Otherwise.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Otherwise.java,v
  retrieving revision 1.3.12.1.2.1
  retrieving revision 1.3.12.1.2.2
  diff -u -r1.3.12.1.2.1 -r1.3.12.1.2.2
  --- Otherwise.java    13 Jan 2003 22:02:52 -0000      1.3.12.1.2.1
  +++ Otherwise.java    15 Jan 2003 14:43:04 -0000      1.3.12.1.2.2
  @@ -69,8 +69,8 @@
   
   final class Otherwise extends Instruction {
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.16.2.1.2.4 +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java
  
  Index: Output.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java,v
  retrieving revision 1.16.2.1.2.3
  retrieving revision 1.16.2.1.2.4
  diff -u -r1.16.2.1.2.3 -r1.16.2.1.2.4
  
  
  
  1.19.8.1.2.4 +7 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Param.java
  
  Index: Param.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Param.java,v
  retrieving revision 1.19.8.1.2.3
  retrieving revision 1.19.8.1.2.4
  diff -u -r1.19.8.1.2.3 -r1.19.8.1.2.4
  --- Param.java        13 Jan 2003 22:02:52 -0000      1.19.8.1.2.3
  +++ Param.java        15 Jan 2003 14:43:04 -0000      1.19.8.1.2.4
  @@ -101,8 +101,10 @@
        if (parent instanceof Stylesheet) {
            // Mark this as a global parameter
            _isLocal = false;
  +
            // Check if a global variable with this name already exists...
  -         Param param = parser.getSymbolTable().lookupParam(_name);
  +         Param param = (Param) getStaticContext().getVariable(_name);
  +
            // ...and if it does we need to check import precedence
            if (param != null) {
                final int us = this.getImportPrecedence();
  @@ -123,7 +125,7 @@
            }
            // Add this variable if we have higher precedence
            ((Stylesheet)parent).addParam(this);
  -         parser.getSymbolTable().addParam(this);
  +         getStaticContext().addVariable(this);
        }
        else if (parent instanceof Template) {
            _isLocal = true;
  @@ -136,15 +138,15 @@
        * 'select' expression (if present) or is a result tree if the parameter
        * element has a body and no 'select' expression.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_select != null) {
  -         _type = _select.typeCheck(stable);
  +         _type = _select.typeCheck(ccontext);
            if (_type instanceof ReferenceType == false) {
                _select = new CastExpr(_select, Type.Reference);
            }
        }
        else if (hasContents()) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
        _type = Type.Reference;
   
  
  
  
  1.19.2.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParentLocationPath.java
  
  Index: ParentLocationPath.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParentLocationPath.java,v
  retrieving revision 1.19.2.1.2.2
  retrieving revision 1.19.2.1.2.3
  diff -u -r1.19.2.1.2.2 -r1.19.2.1.2.3
  --- ParentLocationPath.java   13 Jan 2003 22:02:52 -0000      1.19.2.1.2.2
  +++ ParentLocationPath.java   15 Jan 2003 14:43:04 -0000      1.19.2.1.2.3
  @@ -107,9 +107,9 @@
        return "ParentLocationPath(" + _path + ", " + _step + ')';
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     stype = _step.typeCheck(stable);
  -     _path.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     stype = _step.typeCheck(ccontext);
  +     _path.typeCheck(ccontext);
   
        if (_axisMismatch) enableNodeOrdering();
   
  
  
  
  1.5.2.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParentPattern.java
  
  Index: ParentPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParentPattern.java,v
  retrieving revision 1.5.2.1.2.1
  retrieving revision 1.5.2.1.2.2
  diff -u -r1.5.2.1.2.1 -r1.5.2.1.2.2
  --- ParentPattern.java        13 Jan 2003 22:02:52 -0000      1.5.2.1.2.1
  +++ ParentPattern.java        15 Jan 2003 14:43:04 -0000      1.5.2.1.2.2
  @@ -88,9 +88,9 @@
        _right.reduceKernelPattern();
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _left.typeCheck(stable);
  -     return _right.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _left.typeCheck(ccontext);
  +     return _right.typeCheck(ccontext);
       }
   
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  
  
  
  1.51.2.1.2.4 +94 -91    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java,v
  retrieving revision 1.51.2.1.2.3
  retrieving revision 1.51.2.1.2.4
  diff -u -r1.51.2.1.2.3 -r1.51.2.1.2.4
  --- Parser.java       13 Jan 2003 22:02:52 -0000      1.51.2.1.2.3
  +++ Parser.java       15 Jan 2003 14:43:04 -0000      1.51.2.1.2.4
  @@ -108,10 +108,14 @@
       private QName       _extensionElementPrefixes;
       private HashMap   _variableScope;
       private Stylesheet  _currentStylesheet;
  -    private SymbolTable _symbolTable; // Maps QNames to syntax-tree nodes
       private Output      _output = null;
       private Template    _template;    // Reference to the template being 
parsed.
   
  +    /**
  +     * A reference to the static context implementation.
  +     */
  +    private StaticContextImpl _staticContext;
  +
       private boolean     _rootNamespaceDef = false; // Used for validity check
   
       private SyntaxTreeNode _root = null;
  @@ -133,15 +137,16 @@
        _template            = null;
        _errors              = new ArrayList();
        _warnings            = new ArrayList();
  -     _symbolTable         = new SymbolTable();
  -     _xpathParser         = new XPathParser(this);
        _currentStylesheet   = null;
        _currentImportPrecedence = 1;
  +     _staticContext       = StaticContextImpl.getInstance(null);
  +        _xpathParser         =
  +            new XPathParser(CompilerContextImpl.getInstance(), 
_staticContext);
   
        initStdClasses();
        initInstructionAttrs();
        initExtClasses();
  -     initSymbolTable();
  +     initStaticContextPrimops();
   
        _useAttributeSets =
            getQName(XSLT_URI, XSL, "use-attribute-sets");
  @@ -254,6 +259,9 @@
       }
   
       public QName getQNameSafe(final String stringRep) {
  +     StaticContext scontext =
  +            StaticContextImpl.getInstance(_currentStylesheet);
  +
        // parse and retrieve namespace
        final int colon = stringRep.lastIndexOf(':');
        if (colon != -1) {
  @@ -263,14 +271,14 @@
   
            // Get the namespace uri from the symbol table
            if (prefix.equals(XMLNS_PREFIX) == false) {
  -             namespace = _symbolTable.lookupNamespace(prefix);
  +             namespace = _staticContext.getNamespace(prefix);
                if (namespace == null) namespace = EMPTYSTRING;
            }
            return getQName(namespace, prefix, localname);
        }
        else {
            final String uri = stringRep.equals(XMLNS_PREFIX) ? null
  -             : _symbolTable.lookupNamespace(EMPTYSTRING);
  +             : _staticContext.getNamespace(EMPTYSTRING);
            return getQName(uri, null, stringRep);
        }
       }
  @@ -299,7 +307,7 @@
   
            // Get the namespace uri from the symbol table
            if (prefix.equals(XMLNS_PREFIX) == false) {
  -             namespace = _symbolTable.lookupNamespace(prefix);
  +             namespace = _staticContext.getNamespace(prefix);
                if (namespace == null && reportError) {
                    final int line = _locator.getLineNumber();
                    ErrorMsg err = new ErrorMsg(ErrorMsg.NAMESPACE_UNDEF_ERR,
  @@ -314,7 +322,7 @@
                ignoreDefaultNs = true;
            }
            final String defURI = ignoreDefaultNs ? null
  -                               : _symbolTable.lookupNamespace(EMPTYSTRING);
  +                               : _staticContext.getNamespace(EMPTYSTRING);
            return getQName(defURI, null, stringRep);
        }
       }
  @@ -418,7 +426,7 @@
                    }
                }
                if (!errorsFound()) {
  -                 stylesheet.typeCheck(_symbolTable);
  +                 stylesheet.typeCheck(CompilerContextImpl.getInstance());
                }
            }
        }
  @@ -715,7 +723,7 @@
       }
   
       public boolean functionSupported(String fname) {
  -     return(_symbolTable.lookupPrimop(fname) != null);
  +     return (_staticContext.getPrimop(fname) != null);
       }
   
       private void initExtClasses() {
  @@ -734,9 +742,9 @@
       }
   
       /**
  -     * Add primops and base functions to the symbol table.
  +     * Add primops and base functions to the static context.
        */
  -    private void initSymbolTable() {
  +    private void initStaticContextPrimops() {
        MethodType I_V  = new MethodType(Type.Int, Type.Void);
        MethodType I_R  = new MethodType(Type.Int, Type.Real);
        MethodType I_S  = new MethodType(Type.Int, Type.String);
  @@ -795,103 +803,99 @@
   
        // The following functions are inlined
   
  -     _symbolTable.addPrimop("current", A_V);
  -     _symbolTable.addPrimop("last", I_V);
  -     _symbolTable.addPrimop("position", I_V);
  -     _symbolTable.addPrimop("true", B_V);
  -     _symbolTable.addPrimop("false", B_V);
  -     _symbolTable.addPrimop("not", B_B);
  -     _symbolTable.addPrimop("name", S_V);
  -     _symbolTable.addPrimop("name", S_A);
  -     _symbolTable.addPrimop("generate-id", S_V);
  -     _symbolTable.addPrimop("generate-id", S_A);
  -     _symbolTable.addPrimop("ceiling", R_R);
  -     _symbolTable.addPrimop("floor", R_R);
  -     _symbolTable.addPrimop("round", R_R);
  -     _symbolTable.addPrimop("contains", B_SS);
  -     _symbolTable.addPrimop("number", R_O);
  -     _symbolTable.addPrimop("number", R_V);
  -     _symbolTable.addPrimop("boolean", B_O);
  -     _symbolTable.addPrimop("string", S_O);
  -     _symbolTable.addPrimop("string", S_V);
  -     _symbolTable.addPrimop("translate", S_SSS);
  -     _symbolTable.addPrimop("string-length", I_V);
  -     _symbolTable.addPrimop("string-length", I_S);
  -     _symbolTable.addPrimop("starts-with", B_SS);
  -     _symbolTable.addPrimop("format-number", S_DS);
  -     _symbolTable.addPrimop("format-number", S_DSS);
  -     _symbolTable.addPrimop("unparsed-entity-uri", S_S);
  -     _symbolTable.addPrimop("key", D_SS);
  -     _symbolTable.addPrimop("key", D_SD);
  -     _symbolTable.addPrimop("id", D_S);
  -     _symbolTable.addPrimop("id", D_D);
  -     _symbolTable.addPrimop("namespace-uri", S_V);
  -     _symbolTable.addPrimop("function-available", B_S);
  -     _symbolTable.addPrimop("element-available", B_S);
  -     _symbolTable.addPrimop("document", D_S);
  -     _symbolTable.addPrimop("document", D_V);
  +     _staticContext.addPrimop("current", A_V);
  +     _staticContext.addPrimop("last", I_V);
  +     _staticContext.addPrimop("position", I_V);
  +     _staticContext.addPrimop("true", B_V);
  +     _staticContext.addPrimop("false", B_V);
  +     _staticContext.addPrimop("not", B_B);
  +     _staticContext.addPrimop("name", S_V);
  +     _staticContext.addPrimop("name", S_A);
  +     _staticContext.addPrimop("generate-id", S_V);
  +     _staticContext.addPrimop("generate-id", S_A);
  +     _staticContext.addPrimop("ceiling", R_R);
  +     _staticContext.addPrimop("floor", R_R);
  +     _staticContext.addPrimop("round", R_R);
  +     _staticContext.addPrimop("contains", B_SS);
  +     _staticContext.addPrimop("number", R_O);
  +     _staticContext.addPrimop("number", R_V);
  +     _staticContext.addPrimop("boolean", B_O);
  +     _staticContext.addPrimop("string", S_O);
  +     _staticContext.addPrimop("string", S_V);
  +     _staticContext.addPrimop("translate", S_SSS);
  +     _staticContext.addPrimop("string-length", I_V);
  +     _staticContext.addPrimop("string-length", I_S);
  +     _staticContext.addPrimop("starts-with", B_SS);
  +     _staticContext.addPrimop("format-number", S_DS);
  +     _staticContext.addPrimop("format-number", S_DSS);
  +     _staticContext.addPrimop("unparsed-entity-uri", S_S);
  +     _staticContext.addPrimop("key", D_SS);
  +     _staticContext.addPrimop("key", D_SD);
  +     _staticContext.addPrimop("id", D_S);
  +     _staticContext.addPrimop("id", D_D);
  +     _staticContext.addPrimop("namespace-uri", S_V);
  +     _staticContext.addPrimop("function-available", B_S);
  +     _staticContext.addPrimop("element-available", B_S);
  +     _staticContext.addPrimop("document", D_S);
  +     _staticContext.addPrimop("document", D_V);
   
        // The following functions are implemented in the basis library
  -     _symbolTable.addPrimop("count", I_D);
  -     _symbolTable.addPrimop("sum", R_D);
  -     _symbolTable.addPrimop("local-name", S_V);
  -     _symbolTable.addPrimop("local-name", S_D);
  -     _symbolTable.addPrimop("namespace-uri", S_V);
  -     _symbolTable.addPrimop("namespace-uri", S_D);
  -     _symbolTable.addPrimop("substring", S_SR);
  -     _symbolTable.addPrimop("substring", S_SRR);
  -     _symbolTable.addPrimop("substring-after", S_SS);
  -     _symbolTable.addPrimop("substring-before", S_SS);
  -     _symbolTable.addPrimop("normalize-space", S_V);
  -     _symbolTable.addPrimop("normalize-space", S_S);
  -     _symbolTable.addPrimop("system-property", S_S);
  +     _staticContext.addPrimop("count", I_D);
  +     _staticContext.addPrimop("sum", R_D);
  +     _staticContext.addPrimop("local-name", S_V);
  +     _staticContext.addPrimop("local-name", S_D);
  +     _staticContext.addPrimop("namespace-uri", S_V);
  +     _staticContext.addPrimop("namespace-uri", S_D);
  +     _staticContext.addPrimop("substring", S_SR);
  +     _staticContext.addPrimop("substring", S_SRR);
  +     _staticContext.addPrimop("substring-after", S_SS);
  +     _staticContext.addPrimop("substring-before", S_SS);
  +     _staticContext.addPrimop("normalize-space", S_V);
  +     _staticContext.addPrimop("normalize-space", S_S);
  +     _staticContext.addPrimop("system-property", S_S);
   
        // Extensions
  -        _symbolTable.addPrimop("nodeset", D_O);
  -        _symbolTable.addPrimop("objectType", S_O);
  +        _staticContext.addPrimop("nodeset", D_O);
  +        _staticContext.addPrimop("objectType", S_O);
   
        // Operators +, -, *, /, % defined on real types.
  -     _symbolTable.addPrimop("+", R_RR);
  -     _symbolTable.addPrimop("-", R_RR);
  -     _symbolTable.addPrimop("*", R_RR);
  -     _symbolTable.addPrimop("/", R_RR);
  -     _symbolTable.addPrimop("%", R_RR);
  +     _staticContext.addPrimop("+", R_RR);
  +     _staticContext.addPrimop("-", R_RR);
  +     _staticContext.addPrimop("*", R_RR);
  +     _staticContext.addPrimop("/", R_RR);
  +     _staticContext.addPrimop("%", R_RR);
   
        // Operators +, -, * defined on integer types.
        // Operators / and % are not  defined on integers (may cause exception)
  -     _symbolTable.addPrimop("+", I_II);
  -     _symbolTable.addPrimop("-", I_II);
  -     _symbolTable.addPrimop("*", I_II);
  +     _staticContext.addPrimop("+", I_II);
  +     _staticContext.addPrimop("-", I_II);
  +     _staticContext.addPrimop("*", I_II);
   
         // Operators <, <= >, >= defined on real types.
  -     _symbolTable.addPrimop("<",  B_RR);
  -     _symbolTable.addPrimop("<=", B_RR);
  -     _symbolTable.addPrimop(">",  B_RR);
  -     _symbolTable.addPrimop(">=", B_RR);
  +     _staticContext.addPrimop("<",  B_RR);
  +     _staticContext.addPrimop("<=", B_RR);
  +     _staticContext.addPrimop(">",  B_RR);
  +     _staticContext.addPrimop(">=", B_RR);
   
        // Operators <, <= >, >= defined on int types.
  -     _symbolTable.addPrimop("<",  B_II);
  -     _symbolTable.addPrimop("<=", B_II);
  -     _symbolTable.addPrimop(">",  B_II);
  -     _symbolTable.addPrimop(">=", B_II);
  +     _staticContext.addPrimop("<",  B_II);
  +     _staticContext.addPrimop("<=", B_II);
  +     _staticContext.addPrimop(">",  B_II);
  +     _staticContext.addPrimop(">=", B_II);
   
        // Operators <, <= >, >= defined on boolean types.
  -     _symbolTable.addPrimop("<",  B_BB);
  -     _symbolTable.addPrimop("<=", B_BB);
  -     _symbolTable.addPrimop(">",  B_BB);
  -     _symbolTable.addPrimop(">=", B_BB);
  +     _staticContext.addPrimop("<",  B_BB);
  +     _staticContext.addPrimop("<=", B_BB);
  +     _staticContext.addPrimop(">",  B_BB);
  +     _staticContext.addPrimop(">=", B_BB);
   
        // Operators 'and' and 'or'.
  -     _symbolTable.addPrimop("or", B_BB);
  -     _symbolTable.addPrimop("and", B_BB);
  +     _staticContext.addPrimop("or", B_BB);
  +     _staticContext.addPrimop("and", B_BB);
   
        // Unary minus.
  -     _symbolTable.addPrimop("u-", R_R);
  -     _symbolTable.addPrimop("u-", I_I);
  -    }
  -
  -    public SymbolTable getSymbolTable() {
  -     return _symbolTable;
  +     _staticContext.addPrimop("u-", R_R);
  +     _staticContext.addPrimop("u-", I_I);
       }
   
       public Template getTemplate() {
  @@ -1274,7 +1278,6 @@
            // Extension elements and excluded elements have to be
            // handled at this point in order to correctly generate
            // Fallback elements from <xsl:fallback>s.
  -         getSymbolTable().setCurrentNode(element);
            ((Stylesheet)element).excludeExtensionPrefixes(this);
        }
   
  
  
  
  1.1.16.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Pattern.java
  
  Index: Pattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Pattern.java,v
  retrieving revision 1.1.16.1
  retrieving revision 1.1.16.1.2.1
  diff -u -r1.1.16.1 -r1.1.16.1.2.1
  --- Pattern.java      14 Aug 2002 19:21:33 -0000      1.1.16.1
  +++ Pattern.java      15 Jan 2003 14:43:04 -0000      1.1.16.1.2.1
  @@ -71,7 +71,7 @@
        * A <code>NodeType</code> has a number of subtypes defined by 
        * <code>NodeType._type</code> corresponding to each type of node.
        */
  -    public abstract Type typeCheck(SymbolTable stable) throws TypeCheckError;
  +    public abstract Type typeCheck(CompilerContext ccontext) throws 
TypeCheckError;
   
       /**
        * Translate this node into JVM bytecodes. Patterns are translated as
  
  
  
  1.24.2.1.2.4 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Predicate.java
  
  Index: Predicate.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Predicate.java,v
  retrieving revision 1.24.2.1.2.3
  retrieving revision 1.24.2.1.2.4
  diff -u -r1.24.2.1.2.3 -r1.24.2.1.2.4
  --- Predicate.java    13 Jan 2003 22:02:52 -0000      1.24.2.1.2.3
  +++ Predicate.java    15 Jan 2003 14:43:04 -0000      1.24.2.1.2.4
  @@ -212,9 +212,9 @@
        * at compile time if its type is number or not. Hence, expressions of
        * reference type are always converted to booleans.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
  -     Type texp = _exp.typeCheck(stable);
  +     Type texp = _exp.typeCheck(ccontext);
   
        // We need explicit type information for reference types - no good!
        if (texp instanceof ReferenceType) {
  @@ -227,7 +227,7 @@
        if (texp instanceof ResultTreeType) {
            _exp = new CastExpr(_exp, Type.Boolean);
            _exp = new CastExpr(_exp, Type.Real);
  -         texp = _exp.typeCheck(stable);
  +         texp = _exp.typeCheck(ccontext);
        }
   
        // Numerical types will be converted to a position filter
  @@ -250,7 +250,7 @@
                positionCall.setParent(this);
   
                _exp = new EqualityExpr(EqualityExpr.EQ, positionCall, _exp);
  -             if (_exp.typeCheck(stable) != Type.Boolean) {
  +             if (_exp.typeCheck(ccontext) != Type.Boolean) {
                    _exp = new CastExpr(_exp, Type.Boolean);
                }
   
  
  
  
  1.7.2.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ProcessingInstruction.java
  
  Index: ProcessingInstruction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ProcessingInstruction.java,v
  retrieving revision 1.7.2.1.2.1
  retrieving revision 1.7.2.1.2.2
  diff -u -r1.7.2.1.2.1 -r1.7.2.1.2.2
  --- ProcessingInstruction.java        13 Jan 2003 22:02:52 -0000      
1.7.2.1.2.1
  +++ ProcessingInstruction.java        15 Jan 2003 14:43:04 -0000      
1.7.2.1.2.2
  @@ -82,9 +82,9 @@
        parseContents(ccontext);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     _name.typeCheck(stable);
  -     typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     _name.typeCheck(ccontext);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.2.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ProcessingInstructionPattern.java
  
  Index: ProcessingInstructionPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ProcessingInstructionPattern.java,v
  retrieving revision 1.2.8.1.2.1
  retrieving revision 1.2.8.1.2.2
  diff -u -r1.2.8.1.2.1 -r1.2.8.1.2.2
  --- ProcessingInstructionPattern.java 10 Jan 2003 16:50:41 -0000      
1.2.8.1.2.1
  +++ ProcessingInstructionPattern.java 15 Jan 2003 14:43:05 -0000      
1.2.8.1.2.2
  @@ -102,13 +102,13 @@
        return false;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (hasPredicates()) {
            // Type check all the predicates (e -> position() = e)
            final int n = _predicates.size();
            for (int i = 0; i < n; i++) {
                final Predicate pred = (Predicate)_predicates.get(i);
  -             pred.typeCheck(stable);
  +             pred.typeCheck(ccontext);
            }
        }
        return Type.NodeSet;
  
  
  
  1.2.8.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RealExpr.java
  
  Index: RealExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RealExpr.java,v
  retrieving revision 1.2.8.1
  retrieving revision 1.2.8.1.2.1
  diff -u -r1.2.8.1 -r1.2.8.1.2.1
  --- RealExpr.java     14 Aug 2002 19:21:33 -0000      1.2.8.1
  +++ RealExpr.java     15 Jan 2003 14:43:05 -0000      1.2.8.1.2.1
  @@ -74,7 +74,7 @@
        _value = value;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return _type = Type.Real;
       }
   
  
  
  
  1.12.8.1.2.4 +6 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RelationalExpr.java
  
  Index: RelationalExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RelationalExpr.java,v
  retrieving revision 1.12.8.1.2.3
  retrieving revision 1.12.8.1.2.4
  diff -u -r1.12.8.1.2.3 -r1.12.8.1.2.4
  --- RelationalExpr.java       13 Jan 2003 22:02:52 -0000      1.12.8.1.2.3
  +++ RelationalExpr.java       15 Jan 2003 14:43:05 -0000      1.12.8.1.2.4
  @@ -104,9 +104,9 @@
            _right.getType() instanceof NodeSetType;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     Type tleft = _left.typeCheck(stable);
  -     Type tright = _right.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     Type tleft = _left.typeCheck(ccontext);
  +     Type tright = _right.typeCheck(ccontext);
   
        //bug fix # 2838, cast to reals if both are result tree fragments
        if (tleft instanceof ResultTreeType &&
  @@ -189,9 +189,9 @@
        }
   
        // Lookup the table of primops to find the best match
  -     MethodType ptype = lookupPrimop(stable, Operators.names[_op],
  -                                     new MethodType(Type.Void,
  -                                                    tleft, tright));
  +     MethodType ptype = lookupPrimop(getStaticContext(),
  +            Operators.names[_op],
  +            new MethodType(Type.Void, tleft, tright));
   
        if (ptype != null) {
            Type arg1 = (Type) ptype.argsType().get(0);
  
  
  
  1.3.8.1.2.1 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SimpleAttributeValue.java
  
  Index: SimpleAttributeValue.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SimpleAttributeValue.java,v
  retrieving revision 1.3.8.1
  retrieving revision 1.3.8.1.2.1
  diff -u -r1.3.8.1 -r1.3.8.1.2.1
  --- SimpleAttributeValue.java 14 Aug 2002 19:21:33 -0000      1.3.8.1
  +++ SimpleAttributeValue.java 15 Jan 2003 14:43:05 -0000      1.3.8.1.2.1
  @@ -83,7 +83,7 @@
        * Returns this attribute value's type (String).
        * @param stable The compiler/parser's symbol table
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return _type = Type.String;
       }
       
  
  
  
  1.15.2.1.2.4 +6 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Sort.java
  
  Index: Sort.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Sort.java,v
  retrieving revision 1.15.2.1.2.3
  retrieving revision 1.15.2.1.2.4
  diff -u -r1.15.2.1.2.3 -r1.15.2.1.2.4
  --- Sort.java 13 Jan 2003 22:02:52 -0000      1.15.2.1.2.3
  +++ Sort.java 15 Jan 2003 14:43:05 -0000      1.15.2.1.2.4
  @@ -174,7 +174,7 @@
        val = getAttribute("data-type");
        if (val.length() == 0) {
            try {
  -             final Type type = _select.typeCheck(parser.getSymbolTable());
  +             final Type type = _select.typeCheck(getCompilerContext());
                if (type instanceof IntType)
                    val = "number";
                else
  @@ -202,8 +202,8 @@
        * Run type checks on the attributes; expression must return a string
        * which we will use as a sort key
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type tselect = _select.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type tselect = _select.typeCheck(ccontext);
   
        // If the sort data-type is not set we use the natural data-type
        // of the data we will sort
  @@ -211,9 +211,9 @@
            _select = new CastExpr(_select, Type.String);
        }
   
  -     _order.typeCheck(stable);
  -     _caseOrder.typeCheck(stable);
  -     _dataType.typeCheck(stable);
  +     _order.typeCheck(ccontext);
  +     _caseOrder.typeCheck(ccontext);
  +     _dataType.typeCheck(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.4.8.1.2.2 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StartsWithCall.java
  
  Index: StartsWithCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StartsWithCall.java,v
  retrieving revision 1.4.8.1.2.1
  retrieving revision 1.4.8.1.2.2
  diff -u -r1.4.8.1.2.1 -r1.4.8.1.2.2
  --- StartsWithCall.java       10 Jan 2003 16:50:41 -0000      1.4.8.1.2.1
  +++ StartsWithCall.java       15 Jan 2003 14:43:05 -0000      1.4.8.1.2.2
  @@ -85,7 +85,7 @@
       /**
        * Type check the two parameters for this function
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Check that the function was passed exactly two arguments
        if (argumentCount() != 2) {
  @@ -96,13 +96,13 @@
   
        // The first argument must be a String, or cast to a String
        _base = argument(0);
  -     Type baseType = _base.typeCheck(stable);        
  +     Type baseType = _base.typeCheck(ccontext);      
        if (baseType != Type.String)
            _base = new CastExpr(_base, Type.String);
   
        // The second argument must also be a String, or cast to a String
        _token = argument(1);
  -     Type tokenType = _token.typeCheck(stable);      
  +     Type tokenType = _token.typeCheck(ccontext);    
        if (tokenType != Type.String)
            _token = new CastExpr(_token, Type.String);
   
  
  
  
  1.1.2.2   +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/StaticContext.java
  
  Index: StaticContext.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/StaticContext.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  
  
  
  1.1.2.2   +10 -13    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/StaticContextImpl.java
  
  Index: StaticContextImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Attic/StaticContextImpl.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- StaticContextImpl.java    13 Jan 2003 22:02:53 -0000      1.1.2.1
  +++ StaticContextImpl.java    15 Jan 2003 14:43:05 -0000      1.1.2.2
  @@ -107,11 +107,18 @@
           if (result == null) {
               _staticContext.set(result = new StaticContextImpl());
           }
  -        result._currentNode = current;
  +        result.setCurrentNode(current);
        result.clearCache();
           return result;
       }
   
  +    /**
  +     * Set current node.
  +     */
  +    public void setCurrentNode(SyntaxTreeNode currentNode) {
  +     _currentNode = currentNode;
  +    }
  +
       // -- Decimal Formats ------------------------------------------------
   
       private HashMap _decimalFormats = null;
  @@ -453,7 +460,7 @@
        * Register a namespace URI so that it will not be declared in the
        * output unless it is actually referenced in the output.
        */
  -    public void setExcludeUri(String uri) {
  +    public void setExcludeURI(String uri) {
           // The null-namespace cannot be excluded
           if (uri == null) return;
   
  @@ -483,7 +490,7 @@
                       uri = getNamespace(Constants.EMPTYSTRING);
                   else
                       uri = getNamespace(prefix);
  -                if (uri != null) setExcludeUri(uri);
  +                if (uri != null) setExcludeURI(uri);
               }
           }
       }
  @@ -522,16 +529,6 @@
       }
   
       // -- SHOULD BE MOVED OUT OF THIS CLASS !!!! -------------------------
  -
  -    /**
  -     * This is used for xsl:attribute elements that have a "namespace"
  -     * attribute that is currently not defined using xmlns:
  -     */
  -    private int _nsCounter = 0;
  -
  -    public String generateNamespacePrefix() {
  -        return(new String("ns"+(_nsCounter++)));
  -    }
   
       private final HashMap _stylesheets = new HashMap();
   
  
  
  
  1.37.2.1.2.4 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Step.java
  
  Index: Step.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Step.java,v
  retrieving revision 1.37.2.1.2.3
  retrieving revision 1.37.2.1.2.4
  diff -u -r1.37.2.1.2.3 -r1.37.2.1.2.4
  --- Step.java 13 Jan 2003 22:02:53 -0000      1.37.2.1.2.3
  +++ Step.java 15 Jan 2003 14:43:05 -0000      1.37.2.1.2.4
  @@ -207,7 +207,7 @@
        * assigned type node if they have no predicates. All other steps
        * have type node-set.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Save this value for later - important for testing for special
        // combinations of steps and patterns than can be optimised
  @@ -229,7 +229,7 @@
            final int n = _predicates.size();
            for (int i = 0; i < n; i++) {
                final Expression pred = (Expression)_predicates.get(i);
  -             pred.typeCheck(stable);
  +             pred.typeCheck(ccontext);
            }
        }
   
  @@ -395,7 +395,7 @@
                else {
                    ParentLocationPath path = new ParentLocationPath(this,step);
                    try {
  -                     path.typeCheck(getParser().getSymbolTable());
  +                     path.typeCheck(CompilerContextImpl.getInstance());
                    }
                    catch (TypeCheckError e) { }
                    path.translate(classGen, methodGen);
  
  
  
  1.17.2.1.2.4 +4 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StepPattern.java
  
  Index: StepPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StepPattern.java,v
  retrieving revision 1.17.2.1.2.3
  retrieving revision 1.17.2.1.2.4
  diff -u -r1.17.2.1.2.3 -r1.17.2.1.2.4
  --- StepPattern.java  13 Jan 2003 22:02:53 -0000      1.17.2.1.2.3
  +++ StepPattern.java  15 Jan 2003 14:43:05 -0000      1.17.2.1.2.4
  @@ -184,13 +184,13 @@
        return  "__step_pattern_iter_" + getXSLTC().nextStepPatternSerial();
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (hasPredicates()) {
            // Type check all the predicates (e -> position() = e)
            final int n = _predicates.size();
            for (int i = 0; i < n; i++) {
                final Predicate pred = (Predicate)_predicates.get(i);
  -             pred.typeCheck(stable);
  +             pred.typeCheck(ccontext);
            }
   
            // Analyze context cases
  @@ -200,7 +200,7 @@
            if (_contextCase == SIMPLE_CONTEXT) {
                _step = new Step(_axis, _nodeType, null);
                _step.setParser(getParser());
  -             _step.typeCheck(stable);
  +             _step.typeCheck(ccontext);
            }
            else if (_contextCase == GENERAL_CONTEXT) {
                final int len = _predicates.size();
  @@ -208,7 +208,7 @@
                    ((Predicate)_predicates.get(i)).dontOptimize();
                _step = new Step(_axis, _nodeType, _predicates);
                _step.setParser(getParser());
  -             _step.typeCheck(stable);
  +             _step.typeCheck(ccontext);
            }
        }
        return _axis == Axis.CHILD ? Type.Element : Type.Attribute;
  
  
  
  1.3.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StringCall.java
  
  Index: StringCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StringCall.java,v
  retrieving revision 1.3.8.1.2.1
  retrieving revision 1.3.8.1.2.2
  diff -u -r1.3.8.1.2.1 -r1.3.8.1.2.2
  --- StringCall.java   10 Jan 2003 16:50:42 -0000      1.3.8.1.2.1
  +++ StringCall.java   15 Jan 2003 14:43:05 -0000      1.3.8.1.2.2
  @@ -73,7 +73,7 @@
        super(fname, arguments);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        final int argc = argumentCount();
        if (argc > 1) {
            ErrorMsg err = new ErrorMsg(ErrorMsg.ILLEGAL_ARG_ERR, this);
  @@ -81,7 +81,7 @@
        }
   
        if (argc > 0) {
  -         argument().typeCheck(stable);
  +         argument().typeCheck(ccontext);
        }
        return _type = Type.String;
       }
  
  
  
  1.43.2.1.2.4 +13 -17    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Stylesheet.java
  
  Index: Stylesheet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Stylesheet.java,v
  retrieving revision 1.43.2.1.2.3
  retrieving revision 1.43.2.1.2.4
  diff -u -r1.43.2.1.2.3 -r1.43.2.1.2.4
  --- Stylesheet.java   13 Jan 2003 22:02:53 -0000      1.43.2.1.2.3
  +++ Stylesheet.java   15 Jan 2003 14:43:05 -0000      1.43.2.1.2.4
  @@ -322,12 +322,12 @@
       /**
        * Store extension URIs
        */
  -    private void extensionURI(String prefixes, SymbolTable stable) {
  +    private void extensionURI(String prefixes, StaticContext scontext) {
        if (prefixes != null) {
            StringTokenizer tokens = new StringTokenizer(prefixes);
            while (tokens.hasMoreTokens()) {
                final String prefix = tokens.nextToken();
  -             final String uri = lookupNamespace(prefix);
  +             final String uri = scontext.getNamespace(prefix);
                if (uri != null) {
                    _extensions.put(uri, prefix);
                }
  @@ -340,15 +340,15 @@
       }
   
       public void excludeExtensionPrefixes(Parser parser) {
  -     final SymbolTable stable = parser.getSymbolTable();
  +     final StaticContextImpl scontext = getStaticContext();
        final String excludePrefixes = getAttribute("exclude-result-prefixes");
        final String extensionPrefixes = 
getAttribute("extension-element-prefixes");
   
        // Exclude XSLT uri
  -     stable.excludeURI(Constants.XSLT_URI);
  -     stable.excludeNamespaces(excludePrefixes);
  -     stable.excludeNamespaces(extensionPrefixes);
  -     extensionURI(extensionPrefixes, stable);
  +     scontext.setExcludeURI(Constants.XSLT_URI);
  +     scontext.setExcludePrefixes(excludePrefixes);
  +     scontext.setExcludePrefixes(extensionPrefixes);
  +     extensionURI(extensionPrefixes, scontext);
       }
   
       /**
  @@ -358,7 +358,7 @@
        */
       public void parse(CompilerContext ccontext) {
           final Parser parser = ccontext.getParser();
  -     final SymbolTable stable = parser.getSymbolTable();
  +     final StaticContextImpl scontext = getStaticContext();
   
        /*
        // Make sure the XSL version set in this stylesheet
  @@ -375,7 +375,7 @@
        addPrefixMapping("xml", "http://www.w3.org/XML/1998/namespace";);
   
        // Report and error if more than one stylesheet defined
  -     final Stylesheet sheet = stable.addStylesheet(_name, this);
  +     final Stylesheet sheet = scontext.addStylesheet(_name, this);
        if (sheet != null) {
            // Error: more that one stylesheet defined
            ErrorMsg err = new ErrorMsg(ErrorMsg.MULTIPLE_STYLESHEET_ERR,this);
  @@ -388,10 +388,8 @@
        // method) as its only child, so the Template class has a special
        // method that handles this (parseSimplified()).
        if (_simplified) {
  -         stable.excludeURI(XSLT_URI);
  +         scontext.setExcludeURI(XSLT_URI);
            Template template = new Template();
  -            StaticContextImpl scontextImpl = getStaticContext();
  -            // TODO: update static context - scontextImpl.addStylesheet()
            template.parseSimplified(ccontext);
        }
        // Parse the children of this node
  @@ -414,7 +412,6 @@
            SyntaxTreeNode child = (SyntaxTreeNode)contents.get(i);
            if ((child instanceof VariableBase) ||
                (child instanceof NamespaceAlias)) {
  -             parser.getSymbolTable().setCurrentNode(child);
                child.parse(ccontext);
            }
        }
  @@ -424,7 +421,6 @@
            SyntaxTreeNode child = (SyntaxTreeNode)contents.get(i);
            if (!(child instanceof VariableBase) &&
                !(child instanceof NamespaceAlias)) {
  -             parser.getSymbolTable().setCurrentNode(child);
                child.parse(ccontext);
            }
   
  @@ -478,13 +474,13 @@
       /**
        * Type check all the children of this node.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        final int count = _globals.size();
        for (int i = 0; i < count; i++) {
            final VariableBase var = (VariableBase)_globals.get(i);
  -         var.typeCheck(stable);
  +         var.typeCheck(ccontext);
        }
  -     return typeCheckContents(stable);
  +     return typeCheckContents(ccontext);
       }
   
       /**
  
  
  
  1.20.2.1.2.4 +3 -8      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SyntaxTreeNode.java
  
  Index: SyntaxTreeNode.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SyntaxTreeNode.java,v
  retrieving revision 1.20.2.1.2.3
  retrieving revision 1.20.2.1.2.4
  diff -u -r1.20.2.1.2.3 -r1.20.2.1.2.4
  --- SyntaxTreeNode.java       13 Jan 2003 22:02:53 -0000      1.20.2.1.2.3
  +++ SyntaxTreeNode.java       15 Jan 2003 14:43:05 -0000      1.20.2.1.2.4
  @@ -352,7 +352,7 @@
        *
        * @param stable The compiler/parser's symbol table
        */
  -    public abstract Type typeCheck(SymbolTable stable)
  +    public abstract Type typeCheck(CompilerContext ccontext)
           throws TypeCheckError;
   
       /**
  @@ -360,13 +360,13 @@
        *
        * @param stable The compiler/parser's symbol table
        */
  -    protected Type typeCheckContents(SymbolTable stable)
  +    protected Type typeCheckContents(CompilerContext ccontext)
           throws TypeCheckError
       {
        final int n = elementCount();
        for (int i = 0; i < n; i++) {
            SyntaxTreeNode item = (SyntaxTreeNode)_contents.get(i);
  -         item.typeCheck(stable);
  +         item.typeCheck(ccontext);
        }
        return Type.Void;
       }
  @@ -570,11 +570,6 @@
       // TEMP - this should go away !
       protected final XSLTC getXSLTC() {
           return getCompilerContext().getXSLTC();
  -    }
  -
  -    // TEMP - this should go away !
  -    protected final SymbolTable getSymbolTable() {
  -        return null;
       }
   
       // TEMP - this should go away !
  
  
  
  1.17.2.1.2.4 +5 -7      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Template.java
  
  Index: Template.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Template.java,v
  retrieving revision 1.17.2.1.2.3
  retrieving revision 1.17.2.1.2.4
  diff -u -r1.17.2.1.2.3 -r1.17.2.1.2.4
  --- Template.java     13 Jan 2003 22:02:53 -0000      1.17.2.1.2.3
  +++ Template.java     15 Jan 2003 14:43:05 -0000      1.17.2.1.2.4
  @@ -160,8 +160,6 @@
       private boolean resolveNamedTemplates(Template other, Parser parser) {
        if (other == null) return true;
   
  -     SymbolTable stable = parser.getSymbolTable();
  -
        final int us = this.getImportPrecedence();
        final int them = other.getImportPrecedence();
   
  @@ -170,7 +168,7 @@
            return true;
        }
        else if (us < them) {
  -         stable.addTemplate(other);
  +         getStaticContext().addTemplate(other);
            this.disable();
            return true;
        }
  @@ -220,7 +218,7 @@
   
        // Add the (named) template to the symbol table
        if (_name != null) {
  -         Template other = parser.getSymbolTable().addTemplate(this);
  +         Template other = getStaticContext().addTemplate(this);
            if (!resolveNamedTemplates(other, parser)) {
                ErrorMsg err =
                    new ErrorMsg(ErrorMsg.TEMPLATE_REDEF_ERR, _name, this);
  @@ -270,12 +268,12 @@
        }
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_pattern != null) {
  -         _pattern.typeCheck(stable);
  +         _pattern.typeCheck(ccontext);
        }
   
  -     return typeCheckContents(stable);
  +     return typeCheckContents(ccontext);
       }
   
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  
  
  
  1.12.2.1.2.3 +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Text.java
  
  Index: Text.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Text.java,v
  retrieving revision 1.12.2.1.2.2
  retrieving revision 1.12.2.1.2.3
  diff -u -r1.12.2.1.2.2 -r1.12.2.1.2.3
  
  
  
  1.4.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TopLevelElement.java
  
  Index: TopLevelElement.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TopLevelElement.java,v
  retrieving revision 1.4.8.1.2.2
  retrieving revision 1.4.8.1.2.3
  diff -u -r1.4.8.1.2.2 -r1.4.8.1.2.3
  --- TopLevelElement.java      13 Jan 2003 22:02:53 -0000      1.4.8.1.2.2
  +++ TopLevelElement.java      15 Jan 2003 14:43:05 -0000      1.4.8.1.2.3
  @@ -72,8 +72,8 @@
       /**
        * Type check all the children of this node.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     return typeCheckContents(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     return typeCheckContents(ccontext);
       }
   
       /**
  
  
  
  1.7.8.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TransletOutput.java
  
  Index: TransletOutput.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TransletOutput.java,v
  retrieving revision 1.7.8.1.2.2
  retrieving revision 1.7.8.1.2.3
  diff -u -r1.7.8.1.2.2 -r1.7.8.1.2.3
  --- TransletOutput.java       13 Jan 2003 22:02:53 -0000      1.7.8.1.2.2
  +++ TransletOutput.java       15 Jan 2003 14:43:05 -0000      1.7.8.1.2.3
  @@ -106,12 +106,12 @@
       /**
        * Type checks the 'file' attribute (must be able to convert it to a 
str).
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type type = _filename.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type type = _filename.typeCheck(ccontext);
        if (type instanceof StringType == false) {
            _filename = new CastExpr(_filename, Type.String);
        }
  -     typeCheckContents(stable);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.4.8.1.2.3 +4 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnaryOpExpr.java
  
  Index: UnaryOpExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnaryOpExpr.java,v
  retrieving revision 1.4.8.1.2.2
  retrieving revision 1.4.8.1.2.3
  diff -u -r1.4.8.1.2.2 -r1.4.8.1.2.3
  --- UnaryOpExpr.java  13 Jan 2003 22:02:53 -0000      1.4.8.1.2.2
  +++ UnaryOpExpr.java  15 Jan 2003 14:43:05 -0000      1.4.8.1.2.3
  @@ -82,11 +82,10 @@
        return(_left.hasPositionCall());
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type tleft = _left.typeCheck(stable);
  -     final MethodType ptype = lookupPrimop(stable, "u-",
  -                                           new MethodType(Type.Void,
  -                                                          tleft));
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type tleft = _left.typeCheck(ccontext);
  +     final MethodType ptype = lookupPrimop(getStaticContext(), "u-",
  +            new MethodType(Type.Void, tleft));
   
        if (ptype != null) {
            final Type arg1 = (Type) ptype.argsType().get(0);
  
  
  
  1.6.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnionPathExpr.java
  
  Index: UnionPathExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnionPathExpr.java,v
  retrieving revision 1.6.8.1.2.2
  retrieving revision 1.6.8.1.2.3
  diff -u -r1.6.8.1.2.2 -r1.6.8.1.2.3
  --- UnionPathExpr.java        13 Jan 2003 22:02:53 -0000      1.6.8.1.2.2
  +++ UnionPathExpr.java        15 Jan 2003 14:43:05 -0000      1.6.8.1.2.3
  @@ -112,10 +112,10 @@
        if (getParent() instanceof Expression) _reverse = false;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        final int length = _components.length;
        for (int i = 0; i < length; i++) {
  -         if (_components[i].typeCheck(stable) != Type.NodeSet) {
  +         if (_components[i].typeCheck(ccontext) != Type.NodeSet) {
                _components[i] = new CastExpr(_components[i], Type.NodeSet);
            }
        }
  
  
  
  1.2.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnparsedEntityUriCall.java
  
  Index: UnparsedEntityUriCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnparsedEntityUriCall.java,v
  retrieving revision 1.2.8.1.2.1
  retrieving revision 1.2.8.1.2.2
  diff -u -r1.2.8.1.2.1 -r1.2.8.1.2.2
  --- UnparsedEntityUriCall.java        10 Jan 2003 16:50:42 -0000      
1.2.8.1.2.1
  +++ UnparsedEntityUriCall.java        15 Jan 2003 14:43:05 -0000      
1.2.8.1.2.2
  @@ -78,8 +78,8 @@
        _entity = argument();
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     final Type entity = _entity.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     final Type entity = _entity.typeCheck(ccontext);
        if (entity instanceof StringType == false) {
            _entity = new CastExpr(_entity, Type.String);
        }
  
  
  
  1.3.2.1.2.1 +11 -7     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnresolvedRef.java
  
  Index: UnresolvedRef.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnresolvedRef.java,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.1.2.1
  diff -u -r1.3.2.1 -r1.3.2.1.2.1
  --- UnresolvedRef.java        14 Aug 2002 19:21:34 -0000      1.3.2.1
  +++ UnresolvedRef.java        15 Jan 2003 14:43:05 -0000      1.3.2.1.2.1
  @@ -90,16 +90,20 @@
        return(err);
       }
   
  -    private VariableRefBase resolve(Parser parser, SymbolTable stable) {
  +    private VariableRefBase resolve(CompilerContext ccontext) {
  +        final Parser parser = ccontext.getParser();
  +
        // At this point the AST is already built and we should be able to
        // find any declared global variable or parameter
        VariableBase ref = parser.lookupVariable(_variableName);
  -     if (ref == null) ref = (VariableBase)stable.lookupName(_variableName);
  +     if (ref == null) {
  +            ref = getStaticContext().getVariable(_variableName);
  +     }
        if (ref == null) {
            reportError();
            return null;
        }
  -     
  +
        // Insert the referenced variable as something the parent variable
        // is dependent of (this class should only be used under variables)
        if ((_var = findParentVariable()) != null) _var.addDependency(ref);
  @@ -113,14 +117,14 @@
            return null;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_ref != null) {
            final String name = _variableName.toString();
            ErrorMsg err = new ErrorMsg(ErrorMsg.CIRCULAR_VARIABLE_ERR,
                                        name, this);
        }
  -     if ((_ref = resolve(getParser(), stable)) != null) {
  -         return (_type = _ref.typeCheck(stable));
  +     if ((_ref = resolve(ccontext)) != null) {
  +         return (_type = _ref.typeCheck(ccontext));
        }
        throw new TypeCheckError(reportError());
       }
  
  
  
  1.3.8.1.2.3 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnsupportedElement.java
  
  Index: UnsupportedElement.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UnsupportedElement.java,v
  retrieving revision 1.3.8.1.2.2
  retrieving revision 1.3.8.1.2.3
  diff -u -r1.3.8.1.2.2 -r1.3.8.1.2.3
  --- UnsupportedElement.java   13 Jan 2003 22:02:53 -0000      1.3.8.1.2.2
  +++ UnsupportedElement.java   15 Jan 2003 14:43:05 -0000      1.3.8.1.2.3
  @@ -139,11 +139,11 @@
       /**
        * Run type check on the fallback element (if any).
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_fallback == null) {
            throw new TypeCheckError(_message);
        }
  -     return(_fallback.typeCheck(stable));
  +     return(_fallback.typeCheck(ccontext));
       }
   
       /**
  
  
  
  1.8.2.1.2.3 +2 -4      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UseAttributeSets.java
  
  Index: UseAttributeSets.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UseAttributeSets.java,v
  retrieving revision 1.8.2.1.2.2
  retrieving revision 1.8.2.1.2.3
  diff -u -r1.8.2.1.2.2 -r1.8.2.1.2.3
  --- UseAttributeSets.java     13 Jan 2003 22:02:53 -0000      1.8.2.1.2.2
  +++ UseAttributeSets.java     15 Jan 2003 14:43:05 -0000      1.8.2.1.2.3
  @@ -108,7 +108,7 @@
       /**
        * Do nada.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void;
       }
   
  @@ -116,17 +116,15 @@
        * Generate a call to the method compiled for this attribute set
        */
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  -
        final ConstantPoolGen cpg = classGen.getConstantPool();
        final InstructionList il = methodGen.getInstructionList();
  -     final SymbolTable symbolTable = getParser().getSymbolTable();
   
        // Go through each attribute set and generate a method call
        for (int i=0; i<_sets.size(); i++) {
            // Get the attribute set name
            final QName name = (QName)_sets.get(i);
            // Get the AttributeSet reference from the symbol table
  -         final AttributeSet attrs = symbolTable.lookupAttributeSet(name);
  +         final AttributeSet attrs = getStaticContext().getAttributeSet(name);
            // Compile the call to the set's method if the set exists
            if (attrs != null) {
                final String methodName = attrs.getMethodName();
  
  
  
  1.7.8.1.2.2 +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ValueOf.java
  
  Index: ValueOf.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ValueOf.java,v
  retrieving revision 1.7.8.1.2.1
  retrieving revision 1.7.8.1.2.2
  diff -u -r1.7.8.1.2.1 -r1.7.8.1.2.2
  --- ValueOf.java      13 Jan 2003 22:02:53 -0000      1.7.8.1.2.1
  +++ ValueOf.java      15 Jan 2003 14:43:05 -0000      1.7.8.1.2.2
  @@ -87,8 +87,8 @@
        if ((str != null) && (str.equals("yes"))) _escaping = false;
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     Type type = _select.typeCheck(stable);
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
  +     Type type = _select.typeCheck(ccontext);
        if ((type != null) && (type.identicalTo(Type.String) == false))
            _select = new CastExpr(_select, Type.String);
        return Type.Void;
  
  
  
  1.22.8.1.2.4 +6 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java
  
  Index: Variable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java,v
  retrieving revision 1.22.8.1.2.3
  retrieving revision 1.22.8.1.2.4
  diff -u -r1.22.8.1.2.3 -r1.22.8.1.2.4
  --- Variable.java     13 Jan 2003 22:02:53 -0000      1.22.8.1.2.3
  +++ Variable.java     15 Jan 2003 14:43:05 -0000      1.22.8.1.2.4
  @@ -86,6 +86,7 @@
        */
       public void parse(CompilerContext ccontext) {
           final Parser parser = ccontext.getParser();
  +        final StaticContextImpl scontext = getStaticContext();
   
        // Parse 'name' and 'select' attributes plus parameter contents
        super.parse(ccontext);
  @@ -96,7 +97,7 @@
            // Mark this as a global variable
            _isLocal = false;
            // Check if a global variable with this name already exists...
  -         Variable var = parser.getSymbolTable().lookupVariable(_name);
  +         Variable var = (Variable) scontext.getVariable(_name);
            // ...and if it does we need to check import precedence
            if (var != null) {
                final int us = this.getImportPrecedence();
  @@ -117,7 +118,7 @@
                // Add this variable if we have higher precedence
            }
            ((Stylesheet)parent).addVariable(this);
  -         parser.getSymbolTable().addVariable(this);
  +         scontext.addVariable(this);
        }
        else {
            _isLocal = true;
  @@ -128,15 +129,15 @@
        * Runs a type check on either the variable element body or the
        * expression in the 'select' attribute
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
   
        // Type check the 'select' expression if present
        if (_select != null) {
  -         _type = _select.typeCheck(stable);
  +         _type = _select.typeCheck(ccontext);
        }
        // Type check the element contents otherwise
        else if (hasContents()) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
            _type = Type.ResultTree;
        }
        else {
  
  
  
  1.16.2.1.2.3 +0 -0      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableBase.java
  
  Index: VariableBase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableBase.java,v
  retrieving revision 1.16.2.1.2.2
  retrieving revision 1.16.2.1.2.3
  diff -u -r1.16.2.1.2.2 -r1.16.2.1.2.3
  
  
  
  1.8.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableRefBase.java
  
  Index: VariableRefBase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableRefBase.java,v
  retrieving revision 1.8.8.1.2.1
  retrieving revision 1.8.8.1.2.2
  diff -u -r1.8.8.1.2.1 -r1.8.8.1.2.2
  --- VariableRefBase.java      2 Dec 2002 15:51:19 -0000       1.8.8.1.2.1
  +++ VariableRefBase.java      15 Jan 2003 14:43:05 -0000      1.8.8.1.2.2
  @@ -129,7 +129,7 @@
        return "variable-ref("+_variable.getName()+'/'+_variable.getType()+')';
       }
   
  -    public Type typeCheck(SymbolTable stable) 
  +    public Type typeCheck(CompilerContext ccontext) 
        throws TypeCheckError 
       {
        // Returned cached type if available
  @@ -164,7 +164,7 @@
           // If that does not work we must force a type-check (this is normally
           // only needed for globals in included/imported stylesheets
           if (_type == null) {
  -            _variable.typeCheck(stable);
  +            _variable.typeCheck(ccontext);
               _type = _variable.getType();
           }
   
  
  
  
  1.10.2.1.2.3 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/When.java
  
  Index: When.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/When.java,v
  retrieving revision 1.10.2.1.2.2
  retrieving revision 1.10.2.1.2.3
  diff -u -r1.10.2.1.2.2 -r1.10.2.1.2.3
  --- When.java 13 Jan 2003 22:02:53 -0000      1.10.2.1.2.2
  +++ When.java 15 Jan 2003 14:43:05 -0000      1.10.2.1.2.3
  @@ -106,14 +106,14 @@
        * the support of a non-available element, and the <xsl:when> body 
contains
        * this non-available element.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        // Type-check the test expression
  -     if (_test.typeCheck(stable) instanceof BooleanType == false) {
  +     if (_test.typeCheck(ccontext) instanceof BooleanType == false) {
            _test = new CastExpr(_test, Type.Boolean);
        }
        // Type-check the contents (if necessary)
        if (!_ignore) {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
   
        return Type.Void;
  
  
  
  1.7.8.1.2.3 +1 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Whitespace.java
  
  Index: Whitespace.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Whitespace.java,v
  retrieving revision 1.7.8.1.2.2
  retrieving revision 1.7.8.1.2.3
  diff -u -r1.7.8.1.2.2 -r1.7.8.1.2.3
  --- Whitespace.java   13 Jan 2003 22:02:53 -0000      1.7.8.1.2.2
  +++ Whitespace.java   15 Jan 2003 14:43:05 -0000      1.7.8.1.2.3
  @@ -176,7 +176,6 @@
            return;
        }
   
  -     final SymbolTable stable = parser.getSymbolTable();
        StringTokenizer list = new StringTokenizer(_elementList);
        StringBuffer elements = new StringBuffer(Constants.EMPTYSTRING);
   
  @@ -565,7 +564,7 @@
       /**
        * Type-check contents/attributes - nothing to do...
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        return Type.Void; // We don't return anything.
       }
   
  
  
  
  1.10.8.1.2.2 +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/WithParam.java
  
  Index: WithParam.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/WithParam.java,v
  retrieving revision 1.10.8.1.2.1
  retrieving revision 1.10.8.1.2.2
  diff -u -r1.10.8.1.2.1 -r1.10.8.1.2.2
  --- WithParam.java    13 Jan 2003 22:02:53 -0000      1.10.8.1.2.1
  +++ WithParam.java    15 Jan 2003 14:43:05 -0000      1.10.8.1.2.2
  @@ -102,15 +102,15 @@
        * Type-check either the select attribute or the element body, depending
        * on which is in use.
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (_select != null) {
  -         final Type tselect = _select.typeCheck(stable);
  +         final Type tselect = _select.typeCheck(ccontext);
            if (tselect instanceof ReferenceType == false) {
                _select = new CastExpr(_select, Type.Reference);
            }
        }
        else {
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
        return Type.Void;
       }
  
  
  
  1.42.2.1.2.4 +3 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XSLTC.java
  
  Index: XSLTC.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XSLTC.java,v
  retrieving revision 1.42.2.1.2.3
  retrieving revision 1.42.2.1.2.4
  diff -u -r1.42.2.1.2.3 -r1.42.2.1.2.4
  --- XSLTC.java        13 Jan 2003 22:02:53 -0000      1.42.2.1.2.3
  +++ XSLTC.java        15 Jan 2003 14:43:05 -0000      1.42.2.1.2.4
  @@ -655,11 +655,9 @@
        * Registers an element and gives it a type so that it can be mapped to
        * DOM element types at run-time.
        */
  -    public int registerNamespace(QName name) {
  -     final SymbolTable stable = _parser.getSymbolTable();
  -     final String uri = stable.lookupNamespace(name.toString());
  -     final int code = registerNamespace(uri);
  -     return code;
  +    public int registerNamespace(QName name, StaticContext scontext) {
  +     final String uri = scontext.getNamespace(name.toString());
  +     return registerNamespace(uri);
       }
   
       /**
  
  
  
  1.18.2.1.2.3 +6 -8      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslAttribute.java
  
  Index: XslAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslAttribute.java,v
  retrieving revision 1.18.2.1.2.2
  retrieving revision 1.18.2.1.2.3
  diff -u -r1.18.2.1.2.2 -r1.18.2.1.2.3
  --- XslAttribute.java 13 Jan 2003 22:02:53 -0000      1.18.2.1.2.2
  +++ XslAttribute.java 15 Jan 2003 14:43:05 -0000      1.18.2.1.2.3
  @@ -91,7 +91,6 @@
       public void parse(CompilerContext ccontext) {
        boolean generated = false;
           final Parser parser = ccontext.getParser();
  -     final SymbolTable stable = parser.getSymbolTable();
   
        String name = getAttribute("name");
        String namespace = getAttribute("namespace");
  @@ -148,7 +147,7 @@
                    _prefix = prefix;
                }
                else {
  -                 _prefix = stable.generateNamespacePrefix();
  +                 _prefix = ccontext.generateNamespacePrefix();
                    generated = true;
                }
            }
  @@ -165,8 +164,7 @@
             */
            if ((parent instanceof LiteralElement) && (!generated)) {
                ((LiteralElement)parent).registerNamespace(_prefix,
  -                                                        namespace,
  -                                                        stable, false);
  +                    namespace, false);
            }
        }
   
  @@ -183,13 +181,13 @@
        parseContents(ccontext);
       }
   
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (!_ignore) {
  -         _name.typeCheck(stable);
  +         _name.typeCheck(ccontext);
            if (_namespace != null) {
  -             _namespace.typeCheck(stable);
  +             _namespace.typeCheck(ccontext);
            }
  -         typeCheckContents(stable);
  +         typeCheckContents(ccontext);
        }
        return Type.Void;
       }
  
  
  
  1.17.2.1.2.4 +5 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslElement.java
  
  Index: XslElement.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslElement.java,v
  retrieving revision 1.17.2.1.2.3
  retrieving revision 1.17.2.1.2.4
  diff -u -r1.17.2.1.2.3 -r1.17.2.1.2.4
  --- XslElement.java   13 Jan 2003 22:02:53 -0000      1.17.2.1.2.3
  +++ XslElement.java   15 Jan 2003 14:43:05 -0000      1.17.2.1.2.4
  @@ -123,7 +123,6 @@
   
       public void parse(CompilerContext ccontext) {
           final Parser parser = ccontext.getParser();
  -     final SymbolTable stable = parser.getSymbolTable();
   
        // Handle the 'name' attribute
        String name = getAttribute("name");
  @@ -177,7 +176,7 @@
                    if (isLiteral(namespace)) {
                        prefix = lookupPrefix(namespace);
                        if (prefix == null) {
  -                         prefix = stable.generateNamespacePrefix();
  +                         prefix = ccontext.generateNamespacePrefix();
                        }
                    }
   
  @@ -210,14 +209,14 @@
       /**
        * Run type check on element name & contents
        */
  -    public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  +    public Type typeCheck(CompilerContext ccontext) throws TypeCheckError {
        if (!_ignore) {
  -         _name.typeCheck(stable);
  +         _name.typeCheck(ccontext);
            if (_namespace != null) {
  -             _namespace.typeCheck(stable);
  +             _namespace.typeCheck(ccontext);
            }
        }
  -     typeCheckContents(stable);
  +     typeCheckContents(ccontext);
        return Type.Void;
       }
   
  
  
  
  1.39.2.1.2.3 +10 -10    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/xpath.cup
  
  Index: xpath.cup
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/xpath.cup,v
  retrieving revision 1.39.2.1.2.2
  retrieving revision 1.39.2.1.2.3
  diff -u -r1.39.2.1.2.2 -r1.39.2.1.2.3
  --- xpath.cup 10 Jan 2003 16:50:43 -0000      1.39.2.1.2.2
  +++ xpath.cup 15 Jan 2003 14:43:05 -0000      1.39.2.1.2.3
  @@ -103,14 +103,14 @@
       private int _lineNumber = 0;
   
       /**
  -     * Reference to the symbol table.
  +     * Reference to the static context.
        */
  -    public SymbolTable _symbolTable;
  +    public StaticContext _scontext;
   
  -    public XPathParser(Parser parser) {
  -        _parser = parser;
  -     _xsltc = parser.getXSLTC();
  -        _symbolTable = parser.getSymbolTable();
  +    public XPathParser(CompilerContext ccontext, StaticContext scontext) {
  +        _parser = ccontext.getParser();
  +     _xsltc = ccontext.getXSLTC();
  +     _scontext = scontext;
       }
   
       public int getLineNumber() {
  @@ -143,7 +143,7 @@
   
            if (axis == Axis.NAMESPACE) {
                return (name.toString().equals("*")) ? -1
  -                 : _xsltc.registerNamespace(name);
  +                 : _xsltc.registerNamespace(name, _scontext);
               }
   
            if (name.getNamespace() == null) {
  @@ -199,7 +199,7 @@
        if (result != null)
               return(result);
           else
  -         return(_symbolTable.lookupName(name));
  +         return _scontext.getVariable(name);
       }
   
       public final void addError(ErrorMsg error) {
  @@ -769,7 +769,7 @@
   
        if (index > 0) {
            final String prefix = string.substring(0, index);
  -         namespace = parser._symbolTable.lookupNamespace(prefix);
  +         namespace = parser._scontext.getNamespace(prefix);
        }
        RESULT = (namespace == null) ? new LiteralExpr(string)
                     : new LiteralExpr(string, namespace); 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to