BSHAssignment.smali
.class Lbsh/BSHAssignment;
.super Lbsh/SimpleNode;
# interfaces
.implements Lbsh/k;
# instance fields
.field public a:I
# direct methods
.method constructor <init>(I)V
.registers 2
invoke-direct {p0, p1}, Lbsh/SimpleNode;-><init>(I)V
return-void
.end method
.method private a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
.registers 7
instance-of v0, p1, Ljava/lang/String;
if-eqz v0, :cond_29
sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;
if-eq p2, v0, :cond_29
const/16 v0, 0x66
if-eq p3, v0, :cond_15
new-instance v0, Lbsh/UtilEvalError;
const-string/jumbo v1, "Use of non + operator with String LHS"
invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V
throw v0
:cond_15
new-instance v0, Ljava/lang/StringBuffer;
invoke-direct {v0}, Ljava/lang/StringBuffer;-><init>()V
check-cast p1, Ljava/lang/String;
invoke-virtual {v0, p1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v0
invoke-virtual {v0, p2}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v0
:goto_28
return-object v0
:cond_29
instance-of v0, p1, Lbsh/Primitive;
if-nez v0, :cond_31
instance-of v0, p2, Lbsh/Primitive;
if-eqz v0, :cond_53
:cond_31
sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;
if-eq p1, v0, :cond_39
sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;
if-ne p2, v0, :cond_42
:cond_39
new-instance v0, Lbsh/UtilEvalError;
const-string/jumbo v1, "Illegal use of undefined object or \'void\' literal"
invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V
throw v0
:cond_42
sget-object v0, Lbsh/Primitive;->b:Lbsh/Primitive;
if-eq p1, v0, :cond_4a
sget-object v0, Lbsh/Primitive;->b:Lbsh/Primitive;
if-ne p2, v0, :cond_53
:cond_4a
new-instance v0, Lbsh/UtilEvalError;
const-string/jumbo v1, "Illegal use of null object or \'null\' literal"
invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V
throw v0
:cond_53
instance-of v0, p1, Ljava/lang/Boolean;
if-nez v0, :cond_63
instance-of v0, p1, Ljava/lang/Character;
if-nez v0, :cond_63
instance-of v0, p1, Ljava/lang/Number;
if-nez v0, :cond_63
instance-of v0, p1, Lbsh/Primitive;
if-eqz v0, :cond_78
:cond_63
instance-of v0, p2, Ljava/lang/Boolean;
if-nez v0, :cond_73
instance-of v0, p2, Ljava/lang/Character;
if-nez v0, :cond_73
instance-of v0, p2, Ljava/lang/Number;
if-nez v0, :cond_73
instance-of v0, p2, Lbsh/Primitive;
if-eqz v0, :cond_78
:cond_73
invoke-static {p1, p2, p3}, Lbsh/Primitive;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
goto :goto_28
:cond_78
new-instance v0, Lbsh/UtilEvalError;
new-instance v1, Ljava/lang/StringBuffer;
invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v2, "Non primitive value in operator: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v1
const-string/jumbo v2, " "
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
sget-object v2, Lbsh/k;->a_:[Ljava/lang/String;
aget-object v2, v2, p3
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
const-string/jumbo v2, " "
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V
throw v0
.end method
# virtual methods
.method public a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
.registers 8
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lbsh/BSHAssignment;->a(I)Lbsh/Node;
move-result-object v0
check-cast v0, Lbsh/BSHPrimaryExpression;
if-nez v0, :cond_12
new-instance v0, Lbsh/InterpreterError;
const-string/jumbo v1, "Error, null LHSnode"
invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V
throw v0
:cond_12
invoke-virtual {p2}, Lbsh/Interpreter;->f()Z
move-result v2
invoke-virtual {v0, p1, p2}, Lbsh/BSHPrimaryExpression;->b(Lbsh/c;Lbsh/Interpreter;)Lbsh/LHS;
move-result-object v3
if-nez v3, :cond_25
new-instance v0, Lbsh/InterpreterError;
const-string/jumbo v1, "Error, null LHS"
invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V
throw v0
:cond_25
const/4 v0, 0x0
iget v1, p0, Lbsh/BSHAssignment;->a:I
const/16 v4, 0x51
if-eq v1, v4, :cond_e1
:try_start_2c
invoke-virtual {v3}, Lbsh/LHS;->a()Ljava/lang/Object;
:try_end_2f
.catch Lbsh/UtilEvalError; {:try_start_2c .. :try_end_2f} :catch_49
move-result-object v0
move-object v1, v0
:goto_31
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lbsh/BSHAssignment;->a(I)Lbsh/Node;
move-result-object v0
check-cast v0, Lbsh/SimpleNode;
invoke-virtual {v0, p1, p2}, Lbsh/SimpleNode;->a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
move-result-object v0
sget-object v4, Lbsh/Primitive;->c:Lbsh/Primitive;
if-ne v0, v4, :cond_4f
new-instance v0, Lbsh/EvalError;
const-string/jumbo v1, "Void assignment."
invoke-direct {v0, v1, p0, p1}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v0
:catch_49
move-exception v0
invoke-virtual {v0, p0, p1}, Lbsh/UtilEvalError;->a(Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;
move-result-object v0
throw v0
:cond_4f
:try_start_4f
iget v4, p0, Lbsh/BSHAssignment;->a:I
sparse-switch v4, :sswitch_data_e4
new-instance v0, Lbsh/InterpreterError;
const-string/jumbo v1, "unimplemented operator in assignment BSH"
invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V
throw v0
:try_end_5d
.catch Lbsh/UtilEvalError; {:try_start_4f .. :try_end_5d} :catch_5d
:catch_5d
move-exception v0
invoke-virtual {v0, p0, p1}, Lbsh/UtilEvalError;->a(Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;
move-result-object v0
throw v0
:sswitch_63
:try_start_63
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
:goto_67
return-object v0
:sswitch_68
const/16 v4, 0x66
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_73
const/16 v4, 0x67
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_7e
const/16 v4, 0x68
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_89
const/16 v4, 0x69
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_94
const/16 v4, 0x6a
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_9f
const/16 v4, 0x6c
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_aa
const/16 v4, 0x6e
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_b5
const/16 v4, 0x6f
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_c0
const/16 v4, 0x70
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_cb
const/16 v4, 0x72
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
goto :goto_67
:sswitch_d6
const/16 v4, 0x74
invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
:try_end_df
.catch Lbsh/UtilEvalError; {:try_start_63 .. :try_end_df} :catch_5d
move-result-object v0
goto :goto_67
:cond_e1
move-object v1, v0
goto/16 :goto_31
:sswitch_data_e4
.sparse-switch
0x51 -> :sswitch_63
0x76 -> :sswitch_68
0x77 -> :sswitch_73
0x78 -> :sswitch_7e
0x79 -> :sswitch_89
0x7a -> :sswitch_94
0x7b -> :sswitch_94
0x7c -> :sswitch_9f
0x7d -> :sswitch_9f
0x7e -> :sswitch_aa
0x7f -> :sswitch_b5
0x80 -> :sswitch_c0
0x81 -> :sswitch_c0
0x82 -> :sswitch_cb
0x83 -> :sswitch_cb
0x84 -> :sswitch_d6
0x85 -> :sswitch_d6
.end sparse-switch
.end method