BSHEnhancedForStatement.smali
.class Lbsh/BSHEnhancedForStatement;
.super Lbsh/SimpleNode;
# interfaces
.implements Lbsh/k;
# instance fields
.field a:Ljava/lang/String;
# direct methods
.method constructor <init>(I)V
.registers 2
invoke-direct {p0, p1}, Lbsh/SimpleNode;-><init>(I)V
return-void
.end method
# virtual methods
.method public a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
.registers 14
const/4 v2, 0x0
const/4 v4, 0x2
const/4 v6, 0x0
const/4 v5, 0x1
invoke-virtual {p1}, Lbsh/c;->b()Lbsh/NameSpace;
move-result-object v7
invoke-virtual {p0, v6}, Lbsh/BSHEnhancedForStatement;->a(I)Lbsh/Node;
move-result-object v0
check-cast v0, Lbsh/SimpleNode;
invoke-virtual {p0}, Lbsh/BSHEnhancedForStatement;->g()I
move-result v1
instance-of v3, v0, Lbsh/BSHType;
if-eqz v3, :cond_44
check-cast v0, Lbsh/BSHType;
invoke-virtual {v0, p1, p2}, Lbsh/BSHType;->b(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Class;
move-result-object v3
invoke-virtual {p0, v5}, Lbsh/BSHEnhancedForStatement;->a(I)Lbsh/Node;
move-result-object v0
check-cast v0, Lbsh/SimpleNode;
if-le v1, v4, :cond_2b
invoke-virtual {p0, v4}, Lbsh/BSHEnhancedForStatement;->a(I)Lbsh/Node;
move-result-object v1
check-cast v1, Lbsh/SimpleNode;
move-object v2, v1
:cond_2b
:goto_2b
new-instance v8, Lbsh/BlockNameSpace;
invoke-direct {v8, v7}, Lbsh/BlockNameSpace;-><init>(Lbsh/NameSpace;)V
invoke-virtual {p1, v8}, Lbsh/c;->b(Lbsh/NameSpace;)Lbsh/NameSpace;
invoke-virtual {v0, p1, p2}, Lbsh/SimpleNode;->a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
move-result-object v0
sget-object v1, Lbsh/Primitive;->b:Lbsh/Primitive;
if-ne v0, v1, :cond_4f
new-instance v0, Lbsh/EvalError;
const-string/jumbo v1, "The collection, array, map, iterator, or enumeration portion of a for statement cannot be null."
invoke-direct {v0, v1, p0, p1}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v0
:cond_44
if-le v1, v5, :cond_e1
invoke-virtual {p0, v5}, Lbsh/BSHEnhancedForStatement;->a(I)Lbsh/Node;
move-result-object v1
check-cast v1, Lbsh/SimpleNode;
move-object v3, v2
move-object v2, v1
goto :goto_2b
:cond_4f
invoke-static {}, Lbsh/f;->a()Lbsh/f;
move-result-object v1
invoke-virtual {v1, v0}, Lbsh/f;->a(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_77
new-instance v1, Lbsh/EvalError;
new-instance v2, Ljava/lang/StringBuffer;
invoke-direct {v2}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v3, "Can\'t iterate over type: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v2
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v2, v0}, 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
invoke-direct {v1, v0, p0, p1}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v1
:cond_77
invoke-virtual {v1, v0}, Lbsh/f;->b(Ljava/lang/Object;)Lbsh/b;
move-result-object v9
sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;
move-object v4, v0
:goto_7e
invoke-interface {v9}, Lbsh/b;->b()Z
move-result v0
if-nez v0, :cond_89
move-object v0, v4
:cond_85
invoke-virtual {p1, v7}, Lbsh/c;->b(Lbsh/NameSpace;)Lbsh/NameSpace;
return-object v0
:cond_89
if-eqz v3, :cond_b1
:try_start_8b
iget-object v0, p0, Lbsh/BSHEnhancedForStatement;->a:Ljava/lang/String;
invoke-interface {v9}, Lbsh/b;->a()Ljava/lang/Object;
move-result-object v1
new-instance v10, Lbsh/Modifiers;
invoke-direct {v10}, Lbsh/Modifiers;-><init>()V
invoke-virtual {v8, v0, v3, v1, v10}, Lbsh/BlockNameSpace;->a(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;Lbsh/Modifiers;)V
:try_end_99
.catch Lbsh/UtilEvalError; {:try_start_8b .. :try_end_99} :catch_bc
:goto_99
if-eqz v2, :cond_ab
invoke-virtual {v2, p1, p2}, Lbsh/SimpleNode;->a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
move-result-object v1
instance-of v0, v1, Lbsh/p;
if-eqz v0, :cond_ab
move-object v0, v1
check-cast v0, Lbsh/p;
iget v0, v0, Lbsh/p;->a:I
sparse-switch v0, :sswitch_data_e4
:cond_ab
move v1, v6
move-object v0, v4
:goto_ad
if-nez v1, :cond_85
move-object v4, v0
goto :goto_7e
:cond_b1
:try_start_b1
iget-object v0, p0, Lbsh/BSHEnhancedForStatement;->a:Ljava/lang/String;
invoke-interface {v9}, Lbsh/b;->a()Ljava/lang/Object;
move-result-object v1
const/4 v10, 0x0
invoke-virtual {v8, v0, v1, v10}, Lbsh/BlockNameSpace;->a(Ljava/lang/String;Ljava/lang/Object;Z)V
:try_end_bb
.catch Lbsh/UtilEvalError; {:try_start_b1 .. :try_end_bb} :catch_bc
goto :goto_99
:catch_bc
move-exception v0
new-instance v1, Ljava/lang/StringBuffer;
invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v2, "for loop iterator variable:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
iget-object v2, p0, Lbsh/BSHEnhancedForStatement;->a:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1, p0, p1}, Lbsh/UtilEvalError;->a(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;
move-result-object v0
throw v0
:sswitch_d8
move-object v0, v1
move v1, v5
goto :goto_ad
:sswitch_db
move v1, v6
move-object v0, v4
goto :goto_ad
:sswitch_de
move v1, v5
move-object v0, v4
goto :goto_ad
:cond_e1
move-object v3, v2
goto/16 :goto_2b
:sswitch_data_e4
.sparse-switch
0xc -> :sswitch_de
0x13 -> :sswitch_db
0x2e -> :sswitch_d8
.end sparse-switch
.end method