[Ikvm-commit] ikvm/runtime DynamicTypeWrapper.cs, 1.257, 1.258 MemberWrapper.cs, 1.203, 1.204
Brought to you by:
jfrijters
|
From: Jeroen F. <jfr...@us...> - 2014-11-11 15:37:11
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17027 Modified Files: DynamicTypeWrapper.cs MemberWrapper.cs Log Message: Bug fix. Conflicting default interface methods should throw IncompatibleClassChangeError instead of AbstractMethodError. Index: MemberWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/MemberWrapper.cs,v retrieving revision 1.203 retrieving revision 1.204 diff -C2 -d -r1.203 -r1.204 *** MemberWrapper.cs 11 Nov 2014 14:59:05 -0000 1.203 --- MemberWrapper.cs 11 Nov 2014 15:37:09 -0000 1.204 *************** *** 1085,1088 **** --- 1085,1093 ---- } + internal bool IsConflictError + { + get { return Error != null && Error.StartsWith("Conflicting default methods:"); } + } + internal MethodWrapper BaseMethod { Index: DynamicTypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/DynamicTypeWrapper.cs,v retrieving revision 1.257 retrieving revision 1.258 diff -C2 -d -r1.257 -r1.258 *** DynamicTypeWrapper.cs 11 Nov 2014 15:28:48 -0000 1.257 --- DynamicTypeWrapper.cs 11 Nov 2014 15:37:09 -0000 1.258 *************** *** 2928,2934 **** string message = mmw.Error ?? (wrapper.Name + "." + methods[index].Name + methods[index].Signature); CodeEmitter ilgen = CodeEmitter.Create(mb); ! ilgen.EmitThrow("java.lang.AbstractMethodError", message); ilgen.DoEmit(); ! wrapper.EmitLevel4Warning(HardError.AbstractMethodError, message); } #if STATIC_COMPILER --- 2928,2934 ---- string message = mmw.Error ?? (wrapper.Name + "." + methods[index].Name + methods[index].Signature); CodeEmitter ilgen = CodeEmitter.Create(mb); ! ilgen.EmitThrow(mmw.IsConflictError ? "java.lang.IncompatibleClassChangeError" : "java.lang.AbstractMethodError", message); ilgen.DoEmit(); ! wrapper.EmitLevel4Warning(mmw.IsConflictError ? HardError.IncompatibleClassChangeError : HardError.AbstractMethodError, message); } #if STATIC_COMPILER *************** *** 7163,7166 **** --- 7163,7169 ---- GetClassLoader().IssueMessage(Message.EmittedAbstractMethodError, this.Name, message); break; + case HardError.IncompatibleClassChangeError: + GetClassLoader().IssueMessage(Message.EmittedIncompatibleClassChangeError, this.Name, message); + break; default: throw new InvalidOperationException(); |