Changeset 449


Ignore:
Timestamp:
Jul 4, 2010 11:30:41 AM (14 years ago)
Author:
Anya Helene Bagge
Message:

Deal with some annotation/marker problems in the static checker

Location:
trunk/MagnoliaPlugin/src/org/magnolialang/eclipse/editor
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagnoliaPlugin/src/org/magnolialang/eclipse/editor/MagnoliaEditor.java

    r448 r449  
    44import org.eclipse.jface.action.Action;
    55import org.eclipse.jface.action.IAction;
     6import org.eclipse.swt.widgets.Composite;
    67import org.eclipse.ui.texteditor.ITextEditorActionConstants;
    78import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
     
    1112    public MagnoliaEditor() {
    1213        super();
    13      //   ((ParseController)getParseController()).setEditor(this);
    1414        // used for the expression breakpoints management
    1515        //setEditorContextMenuId("rascal.editor.contextMenu");
    1616    }
    17    
     17
     18    public void createPartControl(Composite parent) {
     19        super.createPartControl(parent);
     20        if(getParseController() != null)
     21                ((ParseController)getParseController()).setEditor(this);
     22       
     23    }
    1824    protected void createActions() {
    1925        super.createActions();
  • trunk/MagnoliaPlugin/src/org/magnolialang/eclipse/editor/StaticCheckModelListener.java

    r448 r449  
    11package org.magnolialang.eclipse.editor;
    22
     3import org.eclipse.core.resources.IFile;
     4import org.eclipse.core.resources.IMarker;
     5import org.eclipse.core.resources.IProject;
     6import org.eclipse.core.resources.IResource;
     7import org.eclipse.core.resources.IWorkspace;
     8import org.eclipse.core.resources.IWorkspaceRunnable;
     9import org.eclipse.core.runtime.CoreException;
     10import org.eclipse.core.runtime.IPath;
    311import org.eclipse.core.runtime.IProgressMonitor;
    412import org.eclipse.imp.parser.IModelListener;
    513import org.eclipse.imp.parser.IParseController;
    614import org.eclipse.imp.pdb.facts.IConstructor;
     15import org.magnolialang.eclipse.MagnoliaPlugin;
    716import org.magnolialang.env.MagnoliaEnvironment;
     17import org.magnolialang.errors.CompilationError;
    818import org.magnolialang.magnolia.StaticChecker;
    919import org.magnolialang.manager.MagnoliaProjectManager;
     
    2232                        public void run() {
    2333                                monitor.beginTask("Checking Magnolia module " + parseController.getPath().toString(), 3);
     34                                IWorkspaceRunnable action = new IWorkspaceRunnable() {
     35                                        public void run(IProgressMonitor monitor) throws CoreException {
     36                                                doUpdate((ParseController)parseController, monitor);
     37                                        }
     38                                };
    2439
    25                                 ParseController ctrl = (ParseController)parseController;
     40                                try {
     41                                        IProject project = parseController.getProject().getRawProject();
     42                                        project.getWorkspace().run(action, project, IWorkspace.AVOID_UPDATE, monitor);
     43                                } catch (CoreException e) {
     44                                        MagnoliaPlugin.getInstance().logException(e.getMessage(), e);
     45                                }
     46
     47                        }
     48
     49                        private void doUpdate(ParseController ctrl, IProgressMonitor monitor) {
    2650                                MagnoliaProjectManager manager = ctrl.getManager();
    27                                 String moduleName = manager.findEditedModule(ctrl);
    28                                 IConstructor tree = manager.getModuleTree(moduleName, true);
    29                                 monitor.worked(1);
    30                                 MagnoliaEnvironment env = manager.getModuleEnv(moduleName);
    31                                 monitor.worked(1);
     51                                try {
     52                                        String moduleName = manager.findEditedModule(ctrl);
     53                                        if(moduleName != null) {
     54                                                IConstructor tree = manager.getModuleTree(moduleName, true);
     55                                                monitor.worked(1);
     56                                                MagnoliaEnvironment env = manager.getModuleEnv(moduleName);
     57                                                monitor.worked(1);
    3258
    33                                 checker.checkModule(tree, env);
    34                                 monitor.worked(1);
     59                                                checker.checkModule(tree, env);
     60                                                monitor.worked(1);
     61                                        }
     62                                        else
     63                                                monitor.worked(3);
     64                                }
     65                                catch(CompilationError ce) {
     66                                        manager.reportError(ce);
     67                                }
     68                               
     69                                IPath path = parseController.getPath();
     70                                IProject project = parseController.getProject().getRawProject();
     71                               
     72                                monitor.beginTask("Marking errors and warnings in " + path, 1);
     73                                        IFile res = (IFile) project.findMember(path, false);
     74
     75                                        try {
     76                                                res.refreshLocal(IResource.DEPTH_ZERO, monitor);
     77                                        } catch (CoreException e) {
     78                                        }
     79                                        monitor.worked(1);
     80                               
    3581                        }
    3682                };
Note: See TracChangeset for help on using the changeset viewer.