Skip to content

Commit

Permalink
CLJ-949: let more undeclared exceptions continue unchecked
Browse files Browse the repository at this point in the history
This should be all of the remaining occurrences of sneakyThrow that
are no longer needed.  The remaining ones are necessary to avoid Java
compiler errors.

Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
  • Loading branch information
jafingerhut authored and stuarthalloway committed Nov 22, 2013
1 parent 047ca37 commit 020bf97
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 127 deletions.
166 changes: 60 additions & 106 deletions src/jvm/clojure/lang/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -1268,11 +1268,11 @@ public void emitAssign(C context, ObjExpr objx, GeneratorAdapter gen,
}

static Class maybePrimitiveType(Expr e){
if(e instanceof MaybePrimitiveExpr && e.hasJavaClass() && ((MaybePrimitiveExpr)e).canEmitPrimitive())
{
Class c = e.getJavaClass();
if(Util.isPrimitive(c))
return c;
if(e instanceof MaybePrimitiveExpr && e.hasJavaClass() && ((MaybePrimitiveExpr)e).canEmitPrimitive())
{
Class c = e.getJavaClass();
if(Util.isPrimitive(c))
return c;
}
return null;
}
Expand Down Expand Up @@ -2580,29 +2580,22 @@ public void doEmit(C context, ObjExpr objx, GeneratorAdapter gen, boolean emitUn

gen.visitLineNumber(line, gen.mark());

try
if(testExpr instanceof StaticMethodExpr && ((StaticMethodExpr)testExpr).canEmitIntrinsicPredicate())
{
if(testExpr instanceof StaticMethodExpr && ((StaticMethodExpr)testExpr).canEmitIntrinsicPredicate())
{
((StaticMethodExpr) testExpr).emitIntrinsicPredicate(C.EXPRESSION, objx, gen, falseLabel);
}
else if(maybePrimitiveType(testExpr) == boolean.class)
{
((MaybePrimitiveExpr) testExpr).emitUnboxed(C.EXPRESSION, objx, gen);
gen.ifZCmp(gen.EQ, falseLabel);
}
else
{
testExpr.emit(C.EXPRESSION, objx, gen);
gen.dup();
gen.ifNull(nullLabel);
gen.getStatic(BOOLEAN_OBJECT_TYPE, "FALSE", BOOLEAN_OBJECT_TYPE);
gen.visitJumpInsn(IF_ACMPEQ, falseLabel);
}
((StaticMethodExpr) testExpr).emitIntrinsicPredicate(C.EXPRESSION, objx, gen, falseLabel);
}
catch(Exception e)
else if(maybePrimitiveType(testExpr) == boolean.class)
{
throw Util.sneakyThrow(e);
((MaybePrimitiveExpr) testExpr).emitUnboxed(C.EXPRESSION, objx, gen);
gen.ifZCmp(gen.EQ, falseLabel);
}
else
{
testExpr.emit(C.EXPRESSION, objx, gen);
gen.dup();
gen.ifNull(nullLabel);
gen.getStatic(BOOLEAN_OBJECT_TYPE, "FALSE", BOOLEAN_OBJECT_TYPE);
gen.visitJumpInsn(IF_ACMPEQ, falseLabel);
}
if(emitUnboxed)
((MaybePrimitiveExpr)thenExpr).emitUnboxed(context, objx, gen);
Expand Down Expand Up @@ -3340,21 +3333,14 @@ public void emitUnboxed(C context, ObjExpr objx, GeneratorAdapter gen){
for(int i = 0; i < paramclasses.length - 1; i++)
{
Expr e = (Expr) args.nth(i);
try
if(maybePrimitiveType(e) == paramclasses[i])
{
if(maybePrimitiveType(e) == paramclasses[i])
{
((MaybePrimitiveExpr) e).emitUnboxed(C.EXPRESSION, objx, gen);
}
else
{
e.emit(C.EXPRESSION, objx, gen);
HostExpr.emitUnboxArg(objx, gen, paramclasses[i]);
}
((MaybePrimitiveExpr) e).emitUnboxed(C.EXPRESSION, objx, gen);
}
catch(Exception ex)
else
{
throw Util.sneakyThrow(ex);
e.emit(C.EXPRESSION, objx, gen);
HostExpr.emitUnboxArg(objx, gen, paramclasses[i]);
}
}
IPersistentVector restArgs = RT.subvec(args,paramclasses.length - 1,args.count());
Expand Down Expand Up @@ -4716,19 +4702,12 @@ void emitClearCloses(GeneratorAdapter gen){

synchronized Class getCompiledClass(){
if(compiledClass == null)
try
{
// if(RT.booleanCast(COMPILE_FILES.deref()))
// compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode);
// else
{
loader = (DynamicClassLoader) LOADER.deref();
compiledClass = loader.defineClass(name, bytecode, src);
}
}
catch(Exception e)
// if(RT.booleanCast(COMPILE_FILES.deref()))
// compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode);
// else
{
throw Util.sneakyThrow(e);
loader = (DynamicClassLoader) LOADER.deref();
compiledClass = loader.defineClass(name, bytecode, src);
}
return compiledClass;
}
Expand Down Expand Up @@ -5233,10 +5212,6 @@ public void doEmitStatic(ObjExpr fn, ClassVisitor cv){
gen.visitLocalVariable(lb.name, argtypes[lb.idx].getDescriptor(), null, loopLabel, end, lb.idx);
}
}
catch(Exception e)
{
throw Util.sneakyThrow(e);
}
finally
{
Var.popThreadBindings();
Expand Down Expand Up @@ -5301,10 +5276,6 @@ public void doEmitPrim(ObjExpr fn, ClassVisitor cv){
gen.visitLocalVariable(lb.name, argtypes[lb.idx-1].getDescriptor(), null, loopLabel, end, lb.idx);
}
}
catch(Exception e)
{
throw Util.sneakyThrow(e);
}
finally
{
Var.popThreadBindings();
Expand Down Expand Up @@ -6209,49 +6180,42 @@ public void emit(C context, ObjExpr objx, GeneratorAdapter gen){
if(lb.getPrimitiveType() != null)
{
Class primc = lb.getPrimitiveType();
try
final Class pc = maybePrimitiveType(arg);
if(pc == primc)
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
else if(primc == long.class && pc == int.class)
{
final Class pc = maybePrimitiveType(arg);
if(pc == primc)
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
else if(primc == long.class && pc == int.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(I2L);
}
else if(primc == double.class && pc == float.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(F2D);
}
else if(primc == int.class && pc == long.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.invokeStatic(RT_TYPE, Method.getMethod("int intCast(long)"));
}
else if(primc == float.class && pc == double.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(D2F);
}
else
{
// if(true)//RT.booleanCast(RT.WARN_ON_REFLECTION.deref()))
throw new IllegalArgumentException
// RT.errPrintWriter().println
(//source + ":" + line +
" recur arg for primitive local: " +
lb.name + " is not matching primitive, had: " +
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(I2L);
}
else if(primc == double.class && pc == float.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(F2D);
}
else if(primc == int.class && pc == long.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.invokeStatic(RT_TYPE, Method.getMethod("int intCast(long)"));
}
else if(primc == float.class && pc == double.class)
{
((MaybePrimitiveExpr) arg).emitUnboxed(C.EXPRESSION, objx, gen);
gen.visitInsn(D2F);
}
else
{
// if(true)//RT.booleanCast(RT.WARN_ON_REFLECTION.deref()))
throw new IllegalArgumentException
// RT.errPrintWriter().println
(//source + ":" + line +
" recur arg for primitive local: " +
lb.name + " is not matching primitive, had: " +
(arg.hasJavaClass() ? arg.getJavaClass().getName():"Object") +
", needed: " +
primc.getName());
// arg.emit(C.EXPRESSION, objx, gen);
// HostExpr.emitUnboxArg(objx,gen,primc);
}
}
catch(Exception e)
{
throw Util.sneakyThrow(e);
// arg.emit(C.EXPRESSION, objx, gen);
// HostExpr.emitUnboxArg(objx,gen,primc);
}
}
else
Expand Down Expand Up @@ -6683,12 +6647,6 @@ else if((form instanceof IType) ||
return expr.eval();
}
}
catch(Throwable e)
{
if(!(e instanceof RuntimeException))
throw Util.sneakyThrow(e);
throw (RuntimeException)e;
}
finally
{
Var.popThreadBindings();
Expand Down Expand Up @@ -8051,10 +8009,6 @@ public void emit(ObjExpr obj, ClassVisitor cv){
gen.visitLocalVariable(lb.name, argTypes[lb.idx-1].getDescriptor(), null, loopLabel, end, lb.idx);
}
}
catch(Exception e)
{
throw Util.sneakyThrow(e);
}
finally
{
Var.popThreadBindings();
Expand Down
5 changes: 0 additions & 5 deletions src/jvm/clojure/lang/EdnReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,7 @@ static boolean nonConstituent(int ch){

static public Object readString(String s, IPersistentMap opts){
PushbackReader r = new PushbackReader(new java.io.StringReader(s));
try {
return read(r, opts);
}
catch(Exception e) {
throw Util.sneakyThrow(e);
}
}

static boolean isWhitespace(int ch){
Expand Down
7 changes: 1 addition & 6 deletions src/jvm/clojure/lang/RT.java
Original file line number Diff line number Diff line change
Expand Up @@ -1735,12 +1735,7 @@ static public String printString(Object x){

static public Object readString(String s){
PushbackReader r = new PushbackReader(new StringReader(s));
try {
return LispReader.read(r, true, null, false);
}
catch(Exception e) {
throw Util.sneakyThrow(e);
}
return LispReader.read(r, true, null, false);
}

static public void print(Object x, Writer w) throws IOException{
Expand Down
9 changes: 1 addition & 8 deletions src/jvm/clojure/lang/Ref.java
Original file line number Diff line number Diff line change
Expand Up @@ -241,14 +241,7 @@ public Object call() {
}

public void run(){
try
{
invoke();
}
catch(Exception e)
{
throw Util.sneakyThrow(e);
}
invoke();
}

public Object invoke() {
Expand Down
2 changes: 0 additions & 2 deletions src/jvm/clojure/lang/TransactionalHashMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,6 @@ public V remove(Object k){
Ref r = bins[binFor(k)];
IPersistentMap map = (IPersistentMap) r.deref();
Object ret = map.valAt(k);
//checked exceptions are a bad idea, especially in an interface
r.set(map.without(k));
return (V) ret;
}
Expand Down Expand Up @@ -149,7 +148,6 @@ public boolean remove(Object k, Object v){
Entry e = map.entryAt(k);
if(e != null && e.getValue().equals(v))
{
//checked exceptions are a bad idea, especially in an interface
r.set(map.without(k));
return true;
}
Expand Down

0 comments on commit 020bf97

Please sign in to comment.