Mercurial > hg > truffle
diff mxtool/mx.py @ 8607:c7672a325faf
search for classes containing annotations returns source file as well as class name
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 03 Apr 2013 10:08:42 +0200 |
parents | aaf3988bd1b4 |
children | c4bca84d86d7 |
line wrap: on
line diff
--- a/mxtool/mx.py Wed Apr 03 00:20:46 2013 +0200 +++ b/mxtool/mx.py Wed Apr 03 10:08:42 2013 +0200 @@ -311,10 +311,10 @@ def find_classes_with_matching_source_line(self, pkgRoot, function, includeInnerClasses=False): """ Scan the sources of this project for Java source files containing a line for which - 'function' returns true. The fully qualified class name of each existing class - corresponding to a matched source file is returned in a list. + 'function' returns true. A map from class name to source file path for each existing class + corresponding to a matched source file is returned. """ - classes = [] + result = dict() pkgDecl = re.compile(r"^package\s+([a-zA-Z_][\w\.]*)\s*;$") for srcDir in self.source_dirs(): outputDir = self.output_dir() @@ -322,7 +322,8 @@ for name in files: if name.endswith('.java') and name != 'package-info.java': matchFound = False - with open(join(root, name)) as f: + source = join(root, name) + with open(source) as f: pkg = None for line in f: if line.startswith("package "): @@ -342,10 +343,12 @@ for e in os.listdir(pkgOutputDir): if includeInnerClasses: if e.endswith('.class') and (e.startswith(basename) or e.startswith(basename + '$')): - classes.append(pkg + '.' + e[:-len('.class')]) + className = pkg + '.' + e[:-len('.class')] + result[className] = source elif e == basename + '.class': - classes.append(pkg + '.' + basename) - return classes + className = pkg + '.' + basename + result[className] = source + return result def _init_packages_and_imports(self): if not hasattr(self, '_defined_java_packages'):