From 004950966920df36152de937ef18cc1426980d40 Mon Sep 17 00:00:00 2001
From: Herwig Hochleitner <hhochleitner@gmail.com>
Date: Thu, 28 Feb 2013 02:57:07 +0100
Subject: [PATCH 2/3] CLJ-1171 Obey lexical scope for class argument in
 instance? compiler macro

---
 src/jvm/clojure/lang/Compiler.java | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 7eda658..0968106 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -3573,11 +3573,14 @@ static class InvokeExpr implements Expr{
 		Expr fexpr = analyze(context, form.first());
 		if(fexpr instanceof VarExpr && ((VarExpr)fexpr).var.equals(INSTANCE))
 			{
-			if(RT.second(form) instanceof Symbol)
+			Expr sexpr = analyze(C.EXPRESSION, RT.second(form));
+			if(sexpr instanceof ConstantExpr)
 				{
-				Class c = HostExpr.maybeClass(RT.second(form),false);
-				if(c != null)
-					return new InstanceOfExpr(c, analyze(context, RT.third(form)));
+				Object val = ((ConstantExpr) sexpr).val();
+				if(val instanceof Class)
+					{
+					return new InstanceOfExpr((Class) val, analyze(context, RT.third(form)));
+					}
 				}
 			}
 
-- 
1.7.12.4

