Skip to content

Commit

Permalink
Changed equality to consider type
Browse files Browse the repository at this point in the history
  • Loading branch information
pontusmelke committed May 17, 2016
1 parent f6b92a7 commit 9b6f81f
Show file tree
Hide file tree
Showing 7 changed files with 127 additions and 97 deletions.
Expand Up @@ -85,7 +85,7 @@ public void ternary( Expression test, Expression onTrue, Expression onFalse )
}

@Override
public void eq( Expression lhs, Expression rhs )
public void eq( Expression lhs, Expression rhs, TypeReference type )
{

}
Expand Down
Expand Up @@ -58,14 +58,14 @@ public void accept( ExpressionVisitor visitor )
};
}

public static Expression eq( final Expression lhs, final Expression rhs )
public static Expression eq( final Expression lhs, final Expression rhs, TypeReference type )
{
return new Expression()
{
@Override
public void accept( ExpressionVisitor visitor )
{
visitor.eq( lhs, rhs );
visitor.eq( lhs, rhs, type );
}
};
}
Expand Down
Expand Up @@ -133,7 +133,7 @@ public void ternary( Expression test, Expression onTrue, Expression onFalse )
}

@Override
public void eq( Expression lhs, Expression rhs )
public void eq( Expression lhs, Expression rhs, TypeReference ignored )
{
result.append( "eq(" );
lhs.accept( this );
Expand Down
Expand Up @@ -41,7 +41,7 @@ public interface ExpressionVisitor

void ternary( Expression test, Expression onTrue, Expression onFalse );

void eq( Expression lhs, Expression rhs );
void eq( Expression lhs, Expression rhs, TypeReference type );

void or( Expression lhs, Expression rhs );

Expand Down
Expand Up @@ -224,17 +224,10 @@ public void ternary( Expression test, Expression onTrue, Expression onFalse )
}

@Override
public void eq( Expression lhs, Expression rhs )
public void eq( Expression lhs, Expression rhs, TypeReference type )
{
TypeReference lhsType = findType( lhs );
TypeReference rhsType = findType( rhs );

if ( !lhsType.equals( rhsType ) )
{
throw new IllegalStateException( "Cannot compare values of different types" );
}

switch ( lhsType.simpleName() )
switch ( type.simpleName() )
{
case "int":
case "byte":
Expand Down
Expand Up @@ -395,7 +395,7 @@ public void ternary( Expression test, Expression onTrue, Expression onFalse )
}

@Override
public void eq( Expression lhs, Expression rhs )
public void eq( Expression lhs, Expression rhs, TypeReference ignored )
{
lhs.accept( this );
append( " == " );
Expand Down

Large diffs are not rendered by default.

0 comments on commit 9b6f81f

Please sign in to comment.