Changeset 3704 for devel-tools/trunk


Ignore:
Timestamp:
Apr 15, 2008, 9:02:33 PM (13 years ago)
Author:
yura
Message:
  • If rf-file not in src-folder then it is not needed to compile it.
Location:
devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpBuilder.java

    r3675 r3704  
    7373        RfpProject rfpProject = getRfpProject();
    7474        String moduleName = rfpProject.getModuleName(file);
     75        if (moduleName == null)
     76            return;
    7577        IFile classFile = rfpProject.getClassFile(moduleName);
    7678        try {
     
    130132        private final RfpProject project;
    131133        private final IdeMsgHandler handler;
     134        /** May be <code>null</code>! */
    132135        private final String moduleName;
    133136        private final Reader reader;
     
    144147        }
    145148
     149        /** May return <code>null</code>! */
    146150        public String getModuleName () {
    147151            return moduleName;
     
    177181            }
    178182        }
    179        
     183
    180184        // FIXME: Some thing strange...
    181185        private Reader getClassReaderFromLibrary (IClasspathEntry entry, String moduleName) {
     
    212216            } else {
    213217                IFile file = project.getFile(path.append(moduleName.replace('.', '/') + ".class"));
    214                 if (! file.exists())
     218                if (!file.exists())
    215219                    return null;
    216220                String formats;
     
    362366            return null;
    363367        deleteMarkers(file);
    364         CompilerEnvironment environment = new IdeCompilerEnvironment(RfpCore.getRfpProject(project), file,
    365                 new StringReader(document));
    366         AstImplem astImplem = Checker.getModuleImplementation(environment);
    367         return astImplem;
     368        if (RfpCore.getRfpProject(project).getModuleName(file) == null)
     369            return null;
     370        return Checker.getModuleImplementation(new IdeCompilerEnvironment(RfpCore.getRfpProject(project), file,
     371                new StringReader(document)));
    368372    }
    369373
     
    382386    private SortedMap<String, SortedSet<String>> collectDependencies () {
    383387        final SortedMap<String, SortedSet<String>> dependencies = new TreeMap<String, SortedSet<String>>();
    384         final IResourceVisitor resourceVisitor = new IResourceVisitor() {
    385             public boolean visit (IResource resource) throws CoreException {
    386                 if (isRfFile(resource)) {
    387                     final IFile rfFile = (IFile) resource;
    388                     String moduleName = getRfpProject().getModuleName(rfFile);
    389                     SortedSet<String> importedModuleSet = getNamesOfImportedModules(rfFile);
    390                     for (String importedModule : importedModuleSet) {
    391                         SortedSet<String> dependentModules = dependencies.get(importedModule);
    392                         if (dependentModules == null) {
    393                             dependentModules = new TreeSet<String>();
    394                             dependencies.put(importedModule, dependentModules);
     388        try {
     389            getProject().accept(new IResourceVisitor() {
     390                public boolean visit (IResource resource) throws CoreException {
     391                    if (isRfFile(resource)) {
     392                        final IFile rfFile = (IFile) resource;
     393                        String moduleName = getRfpProject().getModuleName(rfFile);
     394                        if (moduleName != null) {
     395                            SortedSet<String> importedModuleSet = getNamesOfImportedModules(rfFile);
     396                            for (String importedModule : importedModuleSet) {
     397                                SortedSet<String> dependentModules = dependencies.get(importedModule);
     398                                if (dependentModules == null) {
     399                                    dependentModules = new TreeSet<String>();
     400                                    dependencies.put(importedModule, dependentModules);
     401                                }
     402                                dependentModules.add(moduleName);
     403                            }
    395404                        }
    396                         dependentModules.add(moduleName);
    397405                    }
    398                 }
    399                 return true;
    400             }
    401         };
    402         try {
    403             getProject().accept(resourceVisitor);
     406                    return true;
     407                }
     408            });
    404409        } catch (CoreException e) {}
    405410        return dependencies;
    406     }
    407 
    408     private SortedSet<String> collectModulesToRecompile (IResourceDelta delta) {
    409         final SortedSet<String> modulesToRecompile = new TreeSet<String>();
    410         final SortedMap<String, SortedSet<String>> dependencies = collectDependencies();
    411         final IResourceDeltaVisitor resourceDeltaVisitor = new IResourceDeltaVisitor() {
    412             public boolean visit (IResourceDelta delta) throws CoreException {
    413                 IResource resource = delta.getResource();
    414                 switch (delta.getKind()) {
    415                     case IResourceDelta.ADDED:
    416                     case IResourceDelta.CHANGED:
    417                         if (isRfFile(resource) || isRfiFile(resource)) {
    418                             SortedSet<String> dependentModuleSet = dependencies.get(getRfpProject().getModuleName(
    419                                     (IFile) resource));
    420                             if (dependentModuleSet != null)
    421                                 modulesToRecompile.addAll(dependentModuleSet);
    422                         }
    423                         if (isRfFile(resource))
    424                             modulesToRecompile.add(getRfpProject().getModuleName((IFile) resource));
    425                         break;
    426                     default:
    427                         break;
    428                 }
    429                 return true;
    430             }
    431         };
    432         try {
    433             delta.accept(resourceDeltaVisitor);
    434         } catch (CoreException e) {}
    435         return modulesToRecompile;
    436411    }
    437412
     
    473448    private void fullBuild (final IProgressMonitor monitor) throws CoreException {
    474449        final SortedSet<String> modulesToRecompile = new TreeSet<String>();
     450        final RfpProject rfpProject = getRfpProject();
    475451        try {
    476452            getProject().accept(new IResourceVisitor() {
    477453                public boolean visit (IResource resource) throws CoreException {
    478                     if (isRfFile(resource))
    479                         modulesToRecompile.add(getRfpProject().getModuleName((IFile) resource));
     454                    if (isRfFile(resource)) {
     455                        String moduleName = rfpProject.getModuleName((IFile) resource);
     456                        if (moduleName != null)
     457                            modulesToRecompile.add(moduleName);
     458                    }
    480459                    return true;
    481460                }
     
    499478
    500479    private void incrementalBuild (IResourceDelta delta, IProgressMonitor monitor) throws CoreException {
    501         SortedSet<String> modulesToRecompile = collectModulesToRecompile(delta);
     480        final SortedSet<String> modulesToRecompile = new TreeSet<String>();
     481        final SortedMap<String, SortedSet<String>> dependencies = collectDependencies();
     482        final RfpProject rfpProject = getRfpProject();
     483        try {
     484            delta.accept(new IResourceDeltaVisitor() {
     485                public boolean visit (IResourceDelta delta) throws CoreException {
     486                    IResource resource = delta.getResource();
     487                    switch (delta.getKind()) {
     488                        case IResourceDelta.ADDED:
     489                        case IResourceDelta.CHANGED:
     490                            if (isRfFile(resource) || isRfiFile(resource)) {
     491                                String moduleName = rfpProject.getModuleName((IFile) resource);
     492                                if (moduleName != null) {
     493                                    SortedSet<String> dependentModuleSet = dependencies.get(moduleName);
     494                                    if (dependentModuleSet != null)
     495                                        modulesToRecompile.addAll(dependentModuleSet);
     496                                    if (isRfFile(resource))
     497                                        modulesToRecompile.add(moduleName);
     498                                }
     499                            }
     500                            break;
     501                        default:
     502                            break;
     503                    }
     504                    return true;
     505                }
     506            });
     507        } catch (CoreException e) {}
    502508        compileModules(modulesToRecompile, monitor);
    503509    }
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpPreBuilder.java

    r3648 r3704  
    5353    }
    5454
    55     private void deleteClassFiles (IFile file) {
     55    private void deleteClassFiles (String moduleName) {
    5656        RfpProject rfpProject = getRfpProject();
    57         String moduleName = rfpProject.getModuleName(file);
    5857        IFile classFile = rfpProject.getClassFile(moduleName);
    5958        try {
     
    7473        private final String moduleName;
    7574
    76         public IdeCompilerEnvironment (RfpProject project, IFile file) {
     75        public IdeCompilerEnvironment (RfpProject project, String moduleName) {
    7776            this.project = project;
    78             this.moduleName = project.getModuleName(file);
     77            this.moduleName = moduleName;
    7978        }
    8079
     
    156155    }
    157156
    158     private void checkAndCompileModuleImplem (IResource resource) {
    159         if (!isRfFile(resource))
    160             return;
    161         IFile file = (IFile) resource;
    162         deleteClassFiles(file);
    163         IdeCompilerEnvironment env = new IdeCompilerEnvironment(getRfpProject(), file);
     157    private void checkAndCompileModuleImplem (String moduleName) {
     158        deleteClassFiles(moduleName);
     159        IdeCompilerEnvironment env = new IdeCompilerEnvironment(getRfpProject(), moduleName);
    164160        AstImplem astImplem = Checker.getModuleImplementation(env);
    165161        byte[] jbc = RefalInterfaceComplier.compile(astImplem);
    166         createClassFile(env.getModuleName(), jbc);
     162        createClassFile(moduleName, jbc);
    167163    }
    168164
     
    221217                return;
    222218            monitor.subTask("Compiling the module " + moduleName);
    223             checkAndCompileModuleImplem(getRfpProject().getSource(moduleName, "rf"));
     219            checkAndCompileModuleImplem(moduleName);
    224220            monitor.worked(1);
    225221        }
     
    240236    private void fullBuild (final IProgressMonitor monitor) throws CoreException {
    241237        final SortedSet<String> modulesToRecompile = new TreeSet<String>();
     238        final RfpProject rfpProject = getRfpProject();
    242239        try {
    243240            getProject().accept(new IResourceVisitor() {
    244241                public boolean visit (IResource resource) throws CoreException {
    245                     if (isRfFile(resource))
    246                         modulesToRecompile.add(getRfpProject().getModuleName((IFile) resource));
     242                    if (isRfFile(resource)) {
     243                        String moduleName = rfpProject.getModuleName((IFile) resource);
     244                        if (moduleName != null)
     245                            modulesToRecompile.add(moduleName);
     246                    }
    247247                    return true;
    248248                }
     
    256256    private void incrementalBuild (IResourceDelta delta, IProgressMonitor monitor) throws CoreException {
    257257        final SortedSet<String> modulesToRecompile = new TreeSet<String>();
     258        final RfpProject rfpProject = getRfpProject();
    258259        try {
    259260            delta.accept(new IResourceDeltaVisitor() {
     
    263264                        case IResourceDelta.ADDED:
    264265                        case IResourceDelta.CHANGED:
    265                             if (isRfFile(resource))
    266                                 modulesToRecompile.add(getRfpProject().getModuleName((IFile) resource));
     266                            if (isRfFile(resource)) {
     267                                String moduleName = rfpProject.getModuleName((IFile) resource);
     268                                if (moduleName != null)
     269                                    modulesToRecompile.add(moduleName);
     270                            }
    267271                            break;
    268272                        default:
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpProject.java

    r3633 r3704  
    6565        return rfpProject == null ? null : rfpProject.getModuleName(file);
    6666    }
    67 
     67   
     68    /** May return <code>null</code>! */
    6869    public String getModuleName (IFile file) {
    6970        try {
Note: See TracChangeset for help on using the changeset viewer.