From c308a47124394f025bc2ba553646ecf8b6c31ba2 Mon Sep 17 00:00:00 2001 From: cpw Date: Sat, 18 Jul 2015 12:47:31 -0400 Subject: [PATCH] Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 --- .../cpw/mods/fml/common/discovery/DirectoryDiscoverer.java | 2 +- .../java/cpw/mods/fml/common/discovery/ITypeDiscoverer.java | 5 +++-- .../java/cpw/mods/fml/common/discovery/ModCandidate.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/fml/src/main/java/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java b/fml/src/main/java/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java index 199ec600f..9aa7218d0 100644 --- a/fml/src/main/java/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java +++ b/fml/src/main/java/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java @@ -38,7 +38,7 @@ public class DirectoryDiscoverer implements ITypeDiscoverer @Override public boolean accept(File file) { - return (file.isFile() && classFile.matcher(file.getName()).find()) || file.isDirectory(); + return (file.isFile() && classFile.matcher(file.getName()).matches()) || file.isDirectory(); } } diff --git a/fml/src/main/java/cpw/mods/fml/common/discovery/ITypeDiscoverer.java b/fml/src/main/java/cpw/mods/fml/common/discovery/ITypeDiscoverer.java index e19446953..efb0b2f53 100644 --- a/fml/src/main/java/cpw/mods/fml/common/discovery/ITypeDiscoverer.java +++ b/fml/src/main/java/cpw/mods/fml/common/discovery/ITypeDiscoverer.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -19,7 +19,8 @@ import cpw.mods.fml.common.ModContainer; public interface ITypeDiscoverer { - public static Pattern classFile = Pattern.compile("([^\\s$]+).class$"); + // main class part, followed by an optional $ and an "inner class" part. $ cannot be last, otherwise scala breaks + public static Pattern classFile = Pattern.compile("[^\\s\\$]+(\\$[^\\s]+)?\\.class$"); public List discover(ModCandidate candidate, ASMDataTable table); } diff --git a/fml/src/main/java/cpw/mods/fml/common/discovery/ModCandidate.java b/fml/src/main/java/cpw/mods/fml/common/discovery/ModCandidate.java index 7581f67ca..746185f9f 100644 --- a/fml/src/main/java/cpw/mods/fml/common/discovery/ModCandidate.java +++ b/fml/src/main/java/cpw/mods/fml/common/discovery/ModCandidate.java @@ -80,7 +80,7 @@ public class ModCandidate public void addClassEntry(String name) { String className = name.substring(0, name.lastIndexOf('.')); // strip the .class - foundClasses.add(className.replace('.', '/')); + foundClasses.add(className); className = className.replace('/','.'); int pkgIdx = className.lastIndexOf('.'); if (pkgIdx > -1)