From d514300aefc604ae6362e6505433b7a97bd31a31 Mon Sep 17 00:00:00 2001 From: Minero Aoki Date: Sun, 12 Apr 2009 06:31:12 +0000 Subject: [PATCH] * net/loveruby/cflat/compiler/Visitor.java: make all return types generic. * net/loveruby/cflat/compiler/TypeChecker.java: ditto. * net/loveruby/cflat/ast/*.java: ditto. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4132 1b9489fe-b721-0410-924e-b54b9192deb8 --- ChangeLog | 9 ++ net/loveruby/cflat/ast/ASTVisitor.java | 84 +++++++++---------- net/loveruby/cflat/ast/AddressNode.java | 2 +- net/loveruby/cflat/ast/ArefNode.java | 2 +- net/loveruby/cflat/ast/AssignNode.java | 2 +- net/loveruby/cflat/ast/BinaryOpNode.java | 2 +- net/loveruby/cflat/ast/BlockNode.java | 2 +- net/loveruby/cflat/ast/BreakNode.java | 2 +- net/loveruby/cflat/ast/CaseNode.java | 2 +- net/loveruby/cflat/ast/CastNode.java | 2 +- net/loveruby/cflat/ast/CondExprNode.java | 2 +- net/loveruby/cflat/ast/ContinueNode.java | 2 +- net/loveruby/cflat/ast/DefinedFunction.java | 2 +- net/loveruby/cflat/ast/DefinedVariable.java | 2 +- net/loveruby/cflat/ast/DereferenceNode.java | 2 +- net/loveruby/cflat/ast/DoWhileNode.java | 2 +- net/loveruby/cflat/ast/Entity.java | 2 +- net/loveruby/cflat/ast/ExprNode.java | 2 +- net/loveruby/cflat/ast/ExprStmtNode.java | 2 +- net/loveruby/cflat/ast/ForNode.java | 2 +- net/loveruby/cflat/ast/FuncallNode.java | 2 +- net/loveruby/cflat/ast/GotoNode.java | 2 +- net/loveruby/cflat/ast/IfNode.java | 2 +- .../cflat/ast/IntegerLiteralNode.java | 2 +- net/loveruby/cflat/ast/LabelNode.java | 2 +- net/loveruby/cflat/ast/LogicalAndNode.java | 2 +- net/loveruby/cflat/ast/LogicalOrNode.java | 2 +- net/loveruby/cflat/ast/MemberNode.java | 2 +- net/loveruby/cflat/ast/OpAssignNode.java | 2 +- net/loveruby/cflat/ast/PrefixOpNode.java | 2 +- net/loveruby/cflat/ast/PtrMemberNode.java | 2 +- net/loveruby/cflat/ast/ReturnNode.java | 2 +- net/loveruby/cflat/ast/SizeofExprNode.java | 2 +- net/loveruby/cflat/ast/SizeofTypeNode.java | 2 +- net/loveruby/cflat/ast/StmtNode.java | 2 +- net/loveruby/cflat/ast/StringLiteralNode.java | 2 +- net/loveruby/cflat/ast/StructNode.java | 2 +- net/loveruby/cflat/ast/SuffixOpNode.java | 2 +- net/loveruby/cflat/ast/SwitchNode.java | 2 +- net/loveruby/cflat/ast/TypeDefinition.java | 2 +- net/loveruby/cflat/ast/TypedefNode.java | 2 +- net/loveruby/cflat/ast/UnaryOpNode.java | 2 +- net/loveruby/cflat/ast/UndefinedFunction.java | 2 +- net/loveruby/cflat/ast/UndefinedVariable.java | 2 +- net/loveruby/cflat/ast/UnionNode.java | 2 +- net/loveruby/cflat/ast/VariableNode.java | 2 +- net/loveruby/cflat/ast/WhileNode.java | 2 +- net/loveruby/cflat/compiler/TypeChecker.java | 2 +- net/loveruby/cflat/compiler/Visitor.java | 16 ++-- 49 files changed, 105 insertions(+), 96 deletions(-) diff --git a/ChangeLog b/ChangeLog index 51b18d3..1e62c33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sun Apr 12 15:31:07 2009 Minero Aoki + + * net/loveruby/cflat/compiler/Visitor.java: make all return types + generic. + + * net/loveruby/cflat/compiler/TypeChecker.java: ditto. + + * net/loveruby/cflat/ast/*.java: ditto. + Mon Apr 6 07:04:30 2009 Minero Aoki * net/loveruby/cflat/compiler/Compiler.java: call JumpResolver at diff --git a/net/loveruby/cflat/ast/ASTVisitor.java b/net/loveruby/cflat/ast/ASTVisitor.java index beaf81b..9e08cc0 100644 --- a/net/loveruby/cflat/ast/ASTVisitor.java +++ b/net/loveruby/cflat/ast/ASTVisitor.java @@ -1,50 +1,50 @@ package net.loveruby.cflat.ast; -public interface ASTVisitor { +public interface ASTVisitor { // Declarations - public DefinedVariable visit(DefinedVariable var); - public UndefinedVariable visit(UndefinedVariable var); - public DefinedFunction visit(DefinedFunction func); - public UndefinedFunction visit(UndefinedFunction func); - public StructNode visit(StructNode struct); - public UnionNode visit(UnionNode union); - public TypedefNode visit(TypedefNode typedef); + public S visit(DefinedVariable var); + public S visit(UndefinedVariable var); + public S visit(DefinedFunction func); + public S visit(UndefinedFunction func); + public S visit(StructNode struct); + public S visit(UnionNode union); + public S visit(TypedefNode typedef); // Statements - public BlockNode visit(BlockNode node); - public ExprStmtNode visit(ExprStmtNode node); - public IfNode visit(IfNode node); - public SwitchNode visit(SwitchNode node); - public CaseNode visit(CaseNode node); - public WhileNode visit(WhileNode node); - public DoWhileNode visit(DoWhileNode node); - public ForNode visit(ForNode node); - public BreakNode visit(BreakNode node); - public ContinueNode visit(ContinueNode node); - public GotoNode visit(GotoNode node); - public LabelNode visit(LabelNode node); - public ReturnNode visit(ReturnNode node); + public S visit(BlockNode node); + public S visit(ExprStmtNode node); + public S visit(IfNode node); + public S visit(SwitchNode node); + public S visit(CaseNode node); + public S visit(WhileNode node); + public S visit(DoWhileNode node); + public S visit(ForNode node); + public S visit(BreakNode node); + public S visit(ContinueNode node); + public S visit(GotoNode node); + public S visit(LabelNode node); + public S visit(ReturnNode node); // Expressions - public AssignNode visit(AssignNode node); - public OpAssignNode visit(OpAssignNode node); - public CondExprNode visit(CondExprNode node); - public LogicalOrNode visit(LogicalOrNode node); - public LogicalAndNode visit(LogicalAndNode node); - public BinaryOpNode visit(BinaryOpNode node); - public UnaryOpNode visit(UnaryOpNode node); - public PrefixOpNode visit(PrefixOpNode node); - public SuffixOpNode visit(SuffixOpNode node); - public ArefNode visit(ArefNode node); - public MemberNode visit(MemberNode node); - public PtrMemberNode visit(PtrMemberNode node); - public FuncallNode visit(FuncallNode node); - public DereferenceNode visit(DereferenceNode node); - public AddressNode visit(AddressNode node); - public CastNode visit(CastNode node); - public SizeofExprNode visit(SizeofExprNode node); - public SizeofTypeNode visit(SizeofTypeNode node); - public VariableNode visit(VariableNode node); - public IntegerLiteralNode visit(IntegerLiteralNode node); - public StringLiteralNode visit(StringLiteralNode node); + public E visit(AssignNode node); + public E visit(OpAssignNode node); + public E visit(CondExprNode node); + public E visit(LogicalOrNode node); + public E visit(LogicalAndNode node); + public E visit(BinaryOpNode node); + public E visit(UnaryOpNode node); + public E visit(PrefixOpNode node); + public E visit(SuffixOpNode node); + public E visit(ArefNode node); + public E visit(MemberNode node); + public E visit(PtrMemberNode node); + public E visit(FuncallNode node); + public E visit(DereferenceNode node); + public E visit(AddressNode node); + public E visit(CastNode node); + public E visit(SizeofExprNode node); + public E visit(SizeofTypeNode node); + public E visit(VariableNode node); + public E visit(IntegerLiteralNode node); + public E visit(StringLiteralNode node); } diff --git a/net/loveruby/cflat/ast/AddressNode.java b/net/loveruby/cflat/ast/AddressNode.java index ef8763b..e83f5a6 100644 --- a/net/loveruby/cflat/ast/AddressNode.java +++ b/net/loveruby/cflat/ast/AddressNode.java @@ -24,7 +24,7 @@ public class AddressNode extends UnaryOpNode { this.type = type; } - public AddressNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/ArefNode.java b/net/loveruby/cflat/ast/ArefNode.java index 2d6274a..3a7cd66 100644 --- a/net/loveruby/cflat/ast/ArefNode.java +++ b/net/loveruby/cflat/ast/ArefNode.java @@ -60,7 +60,7 @@ public class ArefNode extends ExprNode { d.printMember("index", index); } - public ArefNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/AssignNode.java b/net/loveruby/cflat/ast/AssignNode.java index 841835c..4acd243 100644 --- a/net/loveruby/cflat/ast/AssignNode.java +++ b/net/loveruby/cflat/ast/AssignNode.java @@ -5,7 +5,7 @@ public class AssignNode extends AbstractAssignNode { super(lhs, rhs); } - public AssignNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/BinaryOpNode.java b/net/loveruby/cflat/ast/BinaryOpNode.java index 4759b11..179cdbf 100644 --- a/net/loveruby/cflat/ast/BinaryOpNode.java +++ b/net/loveruby/cflat/ast/BinaryOpNode.java @@ -53,7 +53,7 @@ public class BinaryOpNode extends ExprNode { d.printMember("right", right); } - public BinaryOpNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/BlockNode.java b/net/loveruby/cflat/ast/BlockNode.java index cca8013..5b800bd 100644 --- a/net/loveruby/cflat/ast/BlockNode.java +++ b/net/loveruby/cflat/ast/BlockNode.java @@ -38,7 +38,7 @@ public class BlockNode extends StmtNode { d.printNodeList("stmts", stmts); } - public BlockNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/BreakNode.java b/net/loveruby/cflat/ast/BreakNode.java index 9cbf424..ccbe531 100644 --- a/net/loveruby/cflat/ast/BreakNode.java +++ b/net/loveruby/cflat/ast/BreakNode.java @@ -26,7 +26,7 @@ public class BreakNode extends StmtNode { protected void _dump(Dumper d) { } - public BreakNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/CaseNode.java b/net/loveruby/cflat/ast/CaseNode.java index c1e0c2b..e87d980 100644 --- a/net/loveruby/cflat/ast/CaseNode.java +++ b/net/loveruby/cflat/ast/CaseNode.java @@ -39,7 +39,7 @@ public class CaseNode extends StmtNode { d.printMember("body", body); } - public CaseNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/CastNode.java b/net/loveruby/cflat/ast/CastNode.java index 3cfd239..de004e0 100644 --- a/net/loveruby/cflat/ast/CastNode.java +++ b/net/loveruby/cflat/ast/CastNode.java @@ -66,7 +66,7 @@ public class CastNode extends ExprNode { d.printMember("expr", expr); } - public CastNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/CondExprNode.java b/net/loveruby/cflat/ast/CondExprNode.java index 0209d88..e7a22ec 100644 --- a/net/loveruby/cflat/ast/CondExprNode.java +++ b/net/loveruby/cflat/ast/CondExprNode.java @@ -55,7 +55,7 @@ public class CondExprNode extends ExprNode { d.printMember("elseExpr", elseExpr); } - public CondExprNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/ContinueNode.java b/net/loveruby/cflat/ast/ContinueNode.java index 9b21f54..faca9ec 100644 --- a/net/loveruby/cflat/ast/ContinueNode.java +++ b/net/loveruby/cflat/ast/ContinueNode.java @@ -22,7 +22,7 @@ public class ContinueNode extends StmtNode { protected void _dump(Dumper d) { } - public ContinueNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/DefinedFunction.java b/net/loveruby/cflat/ast/DefinedFunction.java index 7afbe0f..a139731 100644 --- a/net/loveruby/cflat/ast/DefinedFunction.java +++ b/net/loveruby/cflat/ast/DefinedFunction.java @@ -115,7 +115,7 @@ public class DefinedFunction extends Function { d.printMember("body", body); } - public DefinedFunction accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/DefinedVariable.java b/net/loveruby/cflat/ast/DefinedVariable.java index 6ac9d5b..520b63f 100644 --- a/net/loveruby/cflat/ast/DefinedVariable.java +++ b/net/loveruby/cflat/ast/DefinedVariable.java @@ -50,7 +50,7 @@ public class DefinedVariable extends Variable { d.printMember("initializer", initializer); } - public DefinedVariable accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/DereferenceNode.java b/net/loveruby/cflat/ast/DereferenceNode.java index 238d1a7..a80afd2 100644 --- a/net/loveruby/cflat/ast/DereferenceNode.java +++ b/net/loveruby/cflat/ast/DereferenceNode.java @@ -13,7 +13,7 @@ public class DereferenceNode extends UnaryOpNode { public boolean isAssignable() { return true; } public boolean isConstantAddress() { return false; } - public DereferenceNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/DoWhileNode.java b/net/loveruby/cflat/ast/DoWhileNode.java index 789b25b..1f20cfb 100644 --- a/net/loveruby/cflat/ast/DoWhileNode.java +++ b/net/loveruby/cflat/ast/DoWhileNode.java @@ -24,7 +24,7 @@ public class DoWhileNode extends LoopNode { d.printMember("cond", cond); } - public DoWhileNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/Entity.java b/net/loveruby/cflat/ast/Entity.java index 5dfc6c1..44a5a6f 100644 --- a/net/loveruby/cflat/ast/Entity.java +++ b/net/loveruby/cflat/ast/Entity.java @@ -90,5 +90,5 @@ abstract public class Entity extends Node { return typeNode.location(); } - abstract public Entity accept(ASTVisitor visitor); + abstract public S accept(ASTVisitor visitor); } diff --git a/net/loveruby/cflat/ast/ExprNode.java b/net/loveruby/cflat/ast/ExprNode.java index a8711a3..e45dc1c 100644 --- a/net/loveruby/cflat/ast/ExprNode.java +++ b/net/loveruby/cflat/ast/ExprNode.java @@ -62,5 +62,5 @@ abstract public class ExprNode extends Node { throw new Error("ExprNode#memref called"); } - abstract public ExprNode accept(ASTVisitor visitor); + abstract public E accept(ASTVisitor visitor); } diff --git a/net/loveruby/cflat/ast/ExprStmtNode.java b/net/loveruby/cflat/ast/ExprStmtNode.java index 20abddf..9cd8316 100644 --- a/net/loveruby/cflat/ast/ExprStmtNode.java +++ b/net/loveruby/cflat/ast/ExprStmtNode.java @@ -20,7 +20,7 @@ public class ExprStmtNode extends StmtNode { d.printMember("expr", expr); } - public ExprStmtNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/ForNode.java b/net/loveruby/cflat/ast/ForNode.java index ff73483..ae14612 100644 --- a/net/loveruby/cflat/ast/ForNode.java +++ b/net/loveruby/cflat/ast/ForNode.java @@ -39,7 +39,7 @@ public class ForNode extends LoopNode { d.printMember("body", body); } - public ForNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/FuncallNode.java b/net/loveruby/cflat/ast/FuncallNode.java index f27bc68..c4ba28b 100644 --- a/net/loveruby/cflat/ast/FuncallNode.java +++ b/net/loveruby/cflat/ast/FuncallNode.java @@ -77,7 +77,7 @@ public class FuncallNode extends ExprNode { d.printNodeList("arguments", arguments); } - public FuncallNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/GotoNode.java b/net/loveruby/cflat/ast/GotoNode.java index 99561a6..ba6551c 100644 --- a/net/loveruby/cflat/ast/GotoNode.java +++ b/net/loveruby/cflat/ast/GotoNode.java @@ -27,7 +27,7 @@ public class GotoNode extends StmtNode { d.printMember("target", target); } - public GotoNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/IfNode.java b/net/loveruby/cflat/ast/IfNode.java index 19ca12c..4dc77b0 100644 --- a/net/loveruby/cflat/ast/IfNode.java +++ b/net/loveruby/cflat/ast/IfNode.java @@ -47,7 +47,7 @@ public class IfNode extends StmtNode { d.printMember("elseBody", elseBody); } - public IfNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/IntegerLiteralNode.java b/net/loveruby/cflat/ast/IntegerLiteralNode.java index c51ec2c..8b051e0 100644 --- a/net/loveruby/cflat/ast/IntegerLiteralNode.java +++ b/net/loveruby/cflat/ast/IntegerLiteralNode.java @@ -29,7 +29,7 @@ public class IntegerLiteralNode extends LiteralNode { d.printMember("value", value); } - public IntegerLiteralNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/LabelNode.java b/net/loveruby/cflat/ast/LabelNode.java index 8bca5fb..23c4807 100644 --- a/net/loveruby/cflat/ast/LabelNode.java +++ b/net/loveruby/cflat/ast/LabelNode.java @@ -34,7 +34,7 @@ public class LabelNode extends StmtNode { d.printMember("stmt", stmt); } - public LabelNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/LogicalAndNode.java b/net/loveruby/cflat/ast/LogicalAndNode.java index 36deaa7..a5ae1ab 100644 --- a/net/loveruby/cflat/ast/LogicalAndNode.java +++ b/net/loveruby/cflat/ast/LogicalAndNode.java @@ -9,7 +9,7 @@ public class LogicalAndNode extends BinaryOpNode { this.endLabel = new Label(); } - public LogicalAndNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/LogicalOrNode.java b/net/loveruby/cflat/ast/LogicalOrNode.java index c4d50a9..e3cad22 100644 --- a/net/loveruby/cflat/ast/LogicalOrNode.java +++ b/net/loveruby/cflat/ast/LogicalOrNode.java @@ -9,7 +9,7 @@ public class LogicalOrNode extends BinaryOpNode { this.endLabel = new Label(); } - public LogicalOrNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/MemberNode.java b/net/loveruby/cflat/ast/MemberNode.java index 8775e93..3d77eaf 100644 --- a/net/loveruby/cflat/ast/MemberNode.java +++ b/net/loveruby/cflat/ast/MemberNode.java @@ -56,7 +56,7 @@ public class MemberNode extends ExprNode { d.printMember("member", member); } - public MemberNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/OpAssignNode.java b/net/loveruby/cflat/ast/OpAssignNode.java index 4d943c4..090722d 100644 --- a/net/loveruby/cflat/ast/OpAssignNode.java +++ b/net/loveruby/cflat/ast/OpAssignNode.java @@ -12,7 +12,7 @@ public class OpAssignNode extends AbstractAssignNode { return operator; } - public OpAssignNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/PrefixOpNode.java b/net/loveruby/cflat/ast/PrefixOpNode.java index dbd6857..6323b0b 100644 --- a/net/loveruby/cflat/ast/PrefixOpNode.java +++ b/net/loveruby/cflat/ast/PrefixOpNode.java @@ -5,7 +5,7 @@ public class PrefixOpNode extends UnaryArithmeticOpNode { super(op, expr); } - public PrefixOpNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/PtrMemberNode.java b/net/loveruby/cflat/ast/PtrMemberNode.java index d34a71e..3701578 100644 --- a/net/loveruby/cflat/ast/PtrMemberNode.java +++ b/net/loveruby/cflat/ast/PtrMemberNode.java @@ -64,7 +64,7 @@ public class PtrMemberNode extends ExprNode { d.printMember("member", member); } - public PtrMemberNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/ReturnNode.java b/net/loveruby/cflat/ast/ReturnNode.java index db66f82..fdffa8f 100644 --- a/net/loveruby/cflat/ast/ReturnNode.java +++ b/net/loveruby/cflat/ast/ReturnNode.java @@ -33,7 +33,7 @@ public class ReturnNode extends StmtNode { d.printMember("expr", expr); } - public ReturnNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/SizeofExprNode.java b/net/loveruby/cflat/ast/SizeofExprNode.java index f8efbd8..ea31713 100644 --- a/net/loveruby/cflat/ast/SizeofExprNode.java +++ b/net/loveruby/cflat/ast/SizeofExprNode.java @@ -34,7 +34,7 @@ public class SizeofExprNode extends ExprNode { d.printMember("expr", expr); } - public SizeofExprNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/SizeofTypeNode.java b/net/loveruby/cflat/ast/SizeofTypeNode.java index 04c8f2a..78a5540 100644 --- a/net/loveruby/cflat/ast/SizeofTypeNode.java +++ b/net/loveruby/cflat/ast/SizeofTypeNode.java @@ -34,7 +34,7 @@ public class SizeofTypeNode extends ExprNode { d.printMember("operand", type); } - public SizeofTypeNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/StmtNode.java b/net/loveruby/cflat/ast/StmtNode.java index c625626..3e0efab 100644 --- a/net/loveruby/cflat/ast/StmtNode.java +++ b/net/loveruby/cflat/ast/StmtNode.java @@ -11,5 +11,5 @@ abstract public class StmtNode extends Node { return location; } - abstract public StmtNode accept(ASTVisitor visitor); + abstract public S accept(ASTVisitor visitor); } diff --git a/net/loveruby/cflat/ast/StringLiteralNode.java b/net/loveruby/cflat/ast/StringLiteralNode.java index 3debeb6..5dad0a5 100644 --- a/net/loveruby/cflat/ast/StringLiteralNode.java +++ b/net/loveruby/cflat/ast/StringLiteralNode.java @@ -51,7 +51,7 @@ public class StringLiteralNode extends LiteralNode { d.printMember("value", value); } - public StringLiteralNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/StructNode.java b/net/loveruby/cflat/ast/StructNode.java index 230010a..6796900 100644 --- a/net/loveruby/cflat/ast/StructNode.java +++ b/net/loveruby/cflat/ast/StructNode.java @@ -21,7 +21,7 @@ public class StructNode extends CompositeTypeDefinition { } // #@@} - public StructNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/SuffixOpNode.java b/net/loveruby/cflat/ast/SuffixOpNode.java index 4c40c8d..7eb3a93 100644 --- a/net/loveruby/cflat/ast/SuffixOpNode.java +++ b/net/loveruby/cflat/ast/SuffixOpNode.java @@ -5,7 +5,7 @@ public class SuffixOpNode extends UnaryArithmeticOpNode { super(op, expr); } - public SuffixOpNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/SwitchNode.java b/net/loveruby/cflat/ast/SwitchNode.java index 817b4ee..9f38b21 100644 --- a/net/loveruby/cflat/ast/SwitchNode.java +++ b/net/loveruby/cflat/ast/SwitchNode.java @@ -35,7 +35,7 @@ public class SwitchNode extends StmtNode implements BreakableStmt { d.printNodeList("cases", cases); } - public SwitchNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/TypeDefinition.java b/net/loveruby/cflat/ast/TypeDefinition.java index 8df5b05..dced0eb 100644 --- a/net/loveruby/cflat/ast/TypeDefinition.java +++ b/net/loveruby/cflat/ast/TypeDefinition.java @@ -33,5 +33,5 @@ abstract public class TypeDefinition extends Node { } abstract public Type definingType(); - abstract public TypeDefinition accept(ASTVisitor visitor); + abstract public S accept(ASTVisitor visitor); } diff --git a/net/loveruby/cflat/ast/TypedefNode.java b/net/loveruby/cflat/ast/TypedefNode.java index fb5d79d..4c31891 100644 --- a/net/loveruby/cflat/ast/TypedefNode.java +++ b/net/loveruby/cflat/ast/TypedefNode.java @@ -36,7 +36,7 @@ public class TypedefNode extends TypeDefinition { d.printMember("typeNode", typeNode); } - public TypedefNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/UnaryOpNode.java b/net/loveruby/cflat/ast/UnaryOpNode.java index a7b890f..d7bad9c 100644 --- a/net/loveruby/cflat/ast/UnaryOpNode.java +++ b/net/loveruby/cflat/ast/UnaryOpNode.java @@ -40,7 +40,7 @@ public class UnaryOpNode extends ExprNode { d.printMember("expr", expr); } - public UnaryOpNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/UndefinedFunction.java b/net/loveruby/cflat/ast/UndefinedFunction.java index 433781b..f113853 100644 --- a/net/loveruby/cflat/ast/UndefinedFunction.java +++ b/net/loveruby/cflat/ast/UndefinedFunction.java @@ -25,7 +25,7 @@ public class UndefinedFunction extends Function { d.printMember("params", params); } - public UndefinedFunction accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/UndefinedVariable.java b/net/loveruby/cflat/ast/UndefinedVariable.java index 240047e..ecb0887 100644 --- a/net/loveruby/cflat/ast/UndefinedVariable.java +++ b/net/loveruby/cflat/ast/UndefinedVariable.java @@ -16,7 +16,7 @@ public class UndefinedVariable extends Variable { d.printMember("typeNode", typeNode); } - public UndefinedVariable accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/UnionNode.java b/net/loveruby/cflat/ast/UnionNode.java index a5dd5a7..571fa09 100644 --- a/net/loveruby/cflat/ast/UnionNode.java +++ b/net/loveruby/cflat/ast/UnionNode.java @@ -21,7 +21,7 @@ public class UnionNode extends CompositeTypeDefinition { } // #@@} - public UnionNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/ast/VariableNode.java b/net/loveruby/cflat/ast/VariableNode.java index e1d55dd..165c1a5 100644 --- a/net/loveruby/cflat/ast/VariableNode.java +++ b/net/loveruby/cflat/ast/VariableNode.java @@ -73,7 +73,7 @@ public class VariableNode extends ExprNode { d.printMember("name", name, isResolved()); } - public VariableNode accept(ASTVisitor visitor) { + public E accept(ASTVisitor visitor) { return visitor.visit(this); } diff --git a/net/loveruby/cflat/ast/WhileNode.java b/net/loveruby/cflat/ast/WhileNode.java index dd2ce42..31ac3be 100644 --- a/net/loveruby/cflat/ast/WhileNode.java +++ b/net/loveruby/cflat/ast/WhileNode.java @@ -22,7 +22,7 @@ public class WhileNode extends LoopNode { d.printMember("body", body); } - public WhileNode accept(ASTVisitor visitor) { + public S accept(ASTVisitor visitor) { return visitor.visit(this); } } diff --git a/net/loveruby/cflat/compiler/TypeChecker.java b/net/loveruby/cflat/compiler/TypeChecker.java index 1b61aee..6d95c32 100644 --- a/net/loveruby/cflat/compiler/TypeChecker.java +++ b/net/loveruby/cflat/compiler/TypeChecker.java @@ -4,7 +4,7 @@ import net.loveruby.cflat.type.*; import net.loveruby.cflat.exception.*; import java.util.*; -class TypeChecker implements ASTVisitor { +class TypeChecker implements ASTVisitor { protected TypeTable typeTable; protected ErrorHandler errorHandler; private DefinedFunction currentFunction; diff --git a/net/loveruby/cflat/compiler/Visitor.java b/net/loveruby/cflat/compiler/Visitor.java index 9466b6b..680acdf 100644 --- a/net/loveruby/cflat/compiler/Visitor.java +++ b/net/loveruby/cflat/compiler/Visitor.java @@ -2,7 +2,7 @@ package net.loveruby.cflat.compiler; import net.loveruby.cflat.ast.*; import java.util.*; -abstract public class Visitor implements ASTVisitor { +abstract public class Visitor implements ASTVisitor { public Visitor() { } @@ -228,34 +228,34 @@ abstract public class Visitor implements ASTVisitor { return null; } - public AddressNode visit(AddressNode node) { + public ExprNode visit(AddressNode node) { visitExpr(node.expr()); return null; } - public CastNode visit(CastNode node) { + public ExprNode visit(CastNode node) { visitExpr(node.expr()); return null; } - public SizeofExprNode visit(SizeofExprNode node) { + public ExprNode visit(SizeofExprNode node) { visitExpr(node.expr()); return null; } - public SizeofTypeNode visit(SizeofTypeNode node) { + public ExprNode visit(SizeofTypeNode node) { return null; } - public VariableNode visit(VariableNode node) { + public ExprNode visit(VariableNode node) { return null; } - public IntegerLiteralNode visit(IntegerLiteralNode node) { + public ExprNode visit(IntegerLiteralNode node) { return null; } - public StringLiteralNode visit(StringLiteralNode node) { + public ExprNode visit(StringLiteralNode node) { return null; } }