[SCM] Lisaac compiler branch, master, updated. lisaac-0.12-498-ge9d7917
Damien Bouvarel
dams.bouvarel at wanadoo.fr
Mon Sep 21 09:46:44 UTC 2009
The following commit has been merged in the master branch:
commit e9d7917eb8adb1acbd92698da543902e925b8b53
Author: Damien Bouvarel <dams.bouvarel at wanadoo.fr>
Date: Mon Sep 21 11:46:26 2009 +0200
bugfixes + resolve completion with genericity (ex: E -> INTEGER, tab.item i. completion ok)
diff --git a/editor/eclipse/eclisaac/META-INF/MANIFEST.MF b/editor/eclipse/eclisaac/META-INF/MANIFEST.MF
index 287772f..0fd949d 100644
--- a/editor/eclipse/eclisaac/META-INF/MANIFEST.MF
+++ b/editor/eclipse/eclisaac/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.lisaac.ldt;singleton:=true
-Bundle-Version: 1.1.6
+Bundle-Version: 1.1.7
Bundle-Activator: org.lisaac.ldt.LisaacPlugin
Bundle-Vendor: %Bundle-Vendor.0
Require-Bundle: org.eclipse.ui,
@@ -23,86 +23,75 @@ Import-Package: org.eclipse.debug.core,
org.eclipse.ui.texteditor.templates,
org.eclipse.ui.views.contentoutline
Export-Package: org.lisaac.ldt;
- uses:="org.eclipse.jface.text.templates.persistence,
- org.eclipse.jface.text.templates,
- org.osgi.framework,
- org.eclipse.ui.plugin,
+ uses:="org.eclipse.core.runtime,
org.eclipse.jface.resource,
- org.eclipse.core.runtime",
+ org.eclipse.ui.plugin,
+ org.eclipse.jface.text.templates.persistence,
+ org.osgi.framework,
+ org.eclipse.jface.text.templates",
org.lisaac.ldt.actions;
- uses:="org.eclipse.jface.viewers,
- org.eclipse.ltk.ui.refactoring,
- org.eclipse.jface.text,
- org.lisaac.ldt.editors,
- org.eclipse.jface.action,
- org.eclipse.swt.widgets,
- org.eclipse.ui",
- org.lisaac.ldt.builder;uses:="org.lisaac.ldt.model,org.eclipse.core.resources,org.eclipse.core.runtime",
- org.lisaac.ldt.editors;
- uses:="org.eclipse.jface.util,
+ uses:="org.eclipse.jface.action,
+ org.eclipse.ui,
org.eclipse.jface.viewers,
- org.eclipse.jface.text.presentation,
- org.eclipse.swt.graphics,
- org.eclipse.jface.text,
- org.eclipse.core.resources,
- org.eclipse.ui.editors.text,
- org.eclipse.jface.text.source,
- org.eclipse.jface.preference,
- org.lisaac.ldt.model,
+ org.eclipse.swt.widgets",
+ org.lisaac.ldt.builder;uses:="org.lisaac.ldt.model,org.eclipse.core.runtime,org.eclipse.core.resources",
+ org.lisaac.ldt.editors;
+ uses:="org.eclipse.jface.text,
org.eclipse.jface.text.hyperlink,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.text.source,
org.eclipse.jface.text.rules,
+ org.eclipse.jface.text.contentassist,
+ org.lisaac.ldt.model,
+ org.eclipse.jface.preference,
+ org.eclipse.jface.text.presentation,
+ org.eclipse.core.resources,
+ org.eclipse.jface.viewers,
+ org.eclipse.swt.graphics,
+ org.eclipse.jface.util,
org.eclipse.swt.widgets,
- org.eclipse.jface.text.contentassist",
+ org.eclipse.ui.editors.text",
org.lisaac.ldt.launch;
- uses:="org.lisaac.ldt.model,
- org.eclipse.jface.viewers,
- org.eclipse.debug.core.model,
+ uses:="org.eclipse.debug.core,
org.eclipse.debug.ui,
- org.eclipse.core.resources,
- org.eclipse.swt.widgets,
org.eclipse.core.runtime,
org.eclipse.ui,
- org.eclipse.debug.core",
- org.lisaac.ldt.model;
- uses:="org.lisaac.ldt.model.items,
- org.lisaac.ldt.model.types,
- org.lisaac.ldt.editors,
+ org.eclipse.debug.core.model,
org.eclipse.core.resources,
+ org.eclipse.jface.viewers,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.widgets",
+ org.lisaac.ldt.model;
+ uses:="org.lisaac.ldt.model.types,
+ org.lisaac.ldt.model.items,
org.lisaac.ldt.model.lip,
- org.lisaac.ldt.builder,
- org.eclipse.core.runtime",
- org.lisaac.ldt.model.items;
- uses:="org.lisaac.ldt.model,
- org.eclipse.jface.text,
- org.lisaac.ldt.model.types,
- org.eclipse.ltk.core.refactoring,
org.eclipse.core.resources,
- org.eclipse.core.runtime",
+ org.lisaac.ldt.builder",
+ org.lisaac.ldt.model.items;uses:="org.lisaac.ldt.model,org.lisaac.ldt.model.types",
org.lisaac.ldt.model.lip,
org.lisaac.ldt.model.types,
- org.lisaac.ldt.outline;uses:="org.eclipse.jface.viewers,org.lisaac.ldt.model.items,org.eclipse.swt.graphics",
+ org.lisaac.ldt.outline;uses:="org.lisaac.ldt.model.items,org.eclipse.jface.viewers,org.eclipse.swt.graphics",
org.lisaac.ldt.perspectives;uses:="org.eclipse.ui",
org.lisaac.ldt.preferences;
- uses:="org.eclipse.jface.preference,
- org.eclipse.core.runtime.preferences,
- org.eclipse.ui.texteditor.templates,
- org.eclipse.ui",
- org.lisaac.ldt.properties;uses:="org.eclipse.ui.dialogs,org.eclipse.swt.widgets",
- org.lisaac.ldt.templates;uses:="org.eclipse.swt.graphics,org.eclipse.jface.text.templates,org.eclipse.jface.text",
+ uses:="org.eclipse.ui.texteditor.templates,
+ org.eclipse.jface.preference,
+ org.eclipse.ui,
+ org.eclipse.core.runtime.preferences",
+ org.lisaac.ldt.properties;uses:="org.eclipse.core.resources,org.eclipse.ui.dialogs,org.eclipse.swt.widgets",
+ org.lisaac.ldt.templates;uses:="org.eclipse.jface.text,org.eclipse.swt.graphics,org.eclipse.jface.text.templates",
org.lisaac.ldt.views;
- uses:="org.eclipse.jface.viewers,
+ uses:="org.eclipse.jface.text,
+ org.eclipse.ui.texteditor,
org.eclipse.ui.console,
org.eclipse.ui.views.contentoutline,
- org.eclipse.jface.text,
- org.eclipse.ui.texteditor,
org.eclipse.core.resources,
+ org.eclipse.jface.viewers,
org.eclipse.swt.widgets",
org.lisaac.ldt.wizards;
- uses:="org.eclipse.jface.dialogs,
- org.eclipse.jface.viewers,
+ uses:="org.eclipse.jface.wizard,
+ org.eclipse.ui,
org.eclipse.core.resources,
- org.eclipse.jface.wizard,
- org.eclipse.swt.widgets,
- org.eclipse.ui"
+ org.eclipse.jface.viewers,
+ org.eclipse.swt.widgets"
Bundle-Localization: plugin
Bundle-Name: %Bundle-Name.0
diff --git a/editor/eclipse/eclisaac/build.properties b/editor/eclipse/eclisaac/build.properties
index efd7c19..329e511 100644
--- a/editor/eclipse/eclisaac/build.properties
+++ b/editor/eclipse/eclisaac/build.properties
@@ -1,13 +1,20 @@
+source.. = src/
+output.. = bin/
bin.includes = META-INF/,\
+ .,\
bin/,\
- help/,\
icons/,\
+ plugin.xml,\
plugin.properties,\
- plugin.xml
-src.includes = icons/,\
help/,\
+ build.properties
+bin.excludes = icons/Thumbs.db
+src.excludes = icons/Thumbs.db
+src.includes = META-INF/,\
+ README,\
build.properties,\
- META-INF/,\
- src/,\
+ help/,\
+ icons/,\
+ plugin.properties,\
plugin.xml,\
- plugin.properties
+ src/
diff --git a/editor/eclipse/eclisaac/plugin.xml b/editor/eclipse/eclisaac/plugin.xml
index cfadac6..3b853ce 100644
--- a/editor/eclipse/eclisaac/plugin.xml
+++ b/editor/eclipse/eclisaac/plugin.xml
@@ -509,5 +509,13 @@
</action>
</viewerContribution>
</extension>
+ <extension
+ id="product"
+ point="org.eclipse.core.runtime.products">
+ <product
+ application="eclisaac_product.application"
+ name="eclisaac">
+ </product>
+ </extension>
</plugin>
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/LisaacPlugin.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/LisaacPlugin.java
index 56d14fd..7dfb3fa 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/LisaacPlugin.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/LisaacPlugin.java
@@ -106,7 +106,7 @@ public class LisaacPlugin extends AbstractUIPlugin {
}
// clean all lisaac projects to get started
- projects[i].build(IncrementalProjectBuilder.CLEAN_BUILD, null);
+ projects[i].build(IncrementalProjectBuilder.FULL_BUILD, null);
} catch (Exception e) {
log(new Status(IStatus.ERROR,
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacCompiler.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacCompiler.java
index a5029b7..fb3ef2a 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacCompiler.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacCompiler.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
@@ -118,7 +119,10 @@ public class LisaacCompiler {
output.refreshLocal(IResource.DEPTH_INFINITE, null);
// move the generated files to bin/
- IContainer bin = project.getFolder("bin");
+ IFolder bin = project.getFolder("bin");
+ if (! bin.exists()) {
+ bin.create(false,true,null);
+ }
IPath generatedPath = new Path(outputName);
IFile executable = output.getFile(generatedPath);
if (! executable.exists()) {
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacLauncher.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacLauncher.java
index bb55953..cf76b22 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacLauncher.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/launch/LisaacLauncher.java
@@ -6,6 +6,7 @@ import java.io.IOException;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.IStreamListener;
@@ -18,7 +19,7 @@ import org.lisaac.ldt.views.LisaacConsole;
public class LisaacLauncher {
- public static boolean executeCommandInConsole(final ILaunch launch, final IProgressMonitor monitor,
+ public static boolean executeCommandInConsole(final ILaunch launch, IProgressMonitor monitorParent,
final IContainer container, final String[] commandLine, final LisaacCompiler compiler) throws CoreException {
// get & clear lisaac console
final LisaacConsole console = ConsoleFactory.getConsole();
@@ -27,6 +28,8 @@ public class LisaacLauncher {
if (compiler == null) {
console.activate();// show console
}
+ final IProgressMonitor monitor = new NullProgressMonitor();
+
Runnable getStandardOutput = new Runnable() {
public void run() {
monitor.beginTask("Executing... ", 100);
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/AbstractLisaacParser.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/AbstractLisaacParser.java
index f3fae9e..76d7d80 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/AbstractLisaacParser.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/AbstractLisaacParser.java
@@ -32,6 +32,10 @@ public class AbstractLisaacParser {
public Position getPosition(int len) {
Position result=null;
+ if (position > source.length()) { // outline thread bug
+ return new Position(pos_line, pos_col, pos_cur, len);
+ }
+
while (pos_cur < position) {
if (source.charAt(pos_cur) == '\n') {
pos_col = 0;
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/LisaacCompletionParser.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/LisaacCompletionParser.java
index 1bfd610..14cd386 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/LisaacCompletionParser.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/LisaacCompletionParser.java
@@ -16,6 +16,9 @@ import org.lisaac.ldt.model.items.ITMRead;
import org.lisaac.ldt.model.items.Prototype;
import org.lisaac.ldt.model.items.Slot;
import org.lisaac.ldt.model.types.IType;
+import org.lisaac.ldt.model.types.ITypeMono;
+import org.lisaac.ldt.model.types.TypeGeneric;
+import org.lisaac.ldt.model.types.TypeParameter;
import org.lisaac.ldt.model.types.TypeSelf;
import org.lisaac.ldt.outline.OutlineImages;
@@ -27,11 +30,15 @@ public class LisaacCompletionParser extends LisaacParser {
protected int endOffset;
+ protected TypeGeneric lastGenericType;
public LisaacCompletionParser(String contents, LisaacModel model) {
super(null,contents);
LisaacCompletionParser.model = model;
+ //
+ enableErrorReport(false); // turn off error reporting
+ //
}
/**
@@ -47,8 +54,9 @@ public class LisaacCompletionParser extends LisaacParser {
currentPrototype = LisaacModel.getCurrentPrototype();
currentSlot = currentPrototype.getSlot(startOffset);
+ lastGenericType = null;
endOffset = -1;
-
+
// keyword match
while (readKeyword()) {
if (baseOffset != (startOffset+position)) {
@@ -66,20 +74,27 @@ public class LisaacCompletionParser extends LisaacParser {
return;
}
setPosition(0);
-
+
// slot match
ICode code = readExpr();
if (code != null && currentPrototype != null) {
type = code.getType(currentSlot, currentPrototype);
if (type != null) {
- //if (! type.equals(TypeSimple.getTypeSelf())) {
- //if ("SELF".compareTo(type.toString()) != 0) {
if (type instanceof TypeSelf) {
currentPrototype = findPrototype(((TypeSelf) type).getStaticType());
+
+ } else if (type instanceof TypeParameter && lastGenericType != null) {
+ // genericity TypeParameter -> TypeSimple
+ int index = currentPrototype.getGenericIndex((TypeParameter) type);
+ if (index != -1) {
+ ITypeMono realType = lastGenericType.getGenericElt(index);
+ currentPrototype = findPrototype(realType.toString());
+ }
} else {
currentPrototype = findPrototype(type.toString());
}
if (currentPrototype != null) {
+ // compute completion result
currentPrototype.getSlotProposals(proposals, baseOffset, 0);
proposals.add(new CompletionProposal(""+type,baseOffset,0,0));
} else {
@@ -91,7 +106,7 @@ public class LisaacCompletionParser extends LisaacParser {
// partial name, search for matches
if (code instanceof ITMRead) {
String prefix = ((ITMRead) code).getName();
-
+
// partial local name
if (currentSlot != null) {
currentSlot.getArgumentMatchProposals(prefix, proposals, baseOffset, 0);
@@ -120,20 +135,34 @@ public class LisaacCompletionParser extends LisaacParser {
}
// update source of completion
IType type = lastResult.getType(currentSlot, currentPrototype);
- //if (type != null && ! type.equals(TypeSimple.getTypeSelf())) {
- if (type != null && "SELF".compareTo(type.toString()) != 0) {
- try {
- currentPrototype = findPrototype(type.toString());
- } catch(CoreException e) {
- return null;
- }
- if (currentPrototype == null) {
- return null;
- }
- if (result instanceof ITMRead) {
- currentSlot = currentPrototype.lookupSlot(((ITMRead) result).getName());
- } else {
- currentSlot = null;
+ if (type != null) {
+ String stringType = type.toString();
+ if (stringType != null && "SELF".compareTo(stringType) != 0) {
+ try {
+ if (type instanceof TypeParameter && lastGenericType != null) {
+ // genericity TypeParameter -> TypeSimple
+ int index = currentPrototype.getGenericIndex((TypeParameter) type);
+ if (index != -1) {
+ ITypeMono realType = lastGenericType.getGenericElt(index);
+ currentPrototype = findPrototype(realType.toString());
+ }
+ } else {
+ currentPrototype = findPrototype(stringType);
+ }
+ } catch(CoreException e) {
+ return null;
+ }
+ if (currentPrototype == null) {
+ return null;
+ }
+ if (type instanceof TypeGeneric) {
+ lastGenericType = (TypeGeneric) type;
+ }
+ if (result instanceof ITMRead) {
+ currentSlot = currentPrototype.lookupSlot(((ITMRead) result).getName());
+ } else {
+ currentSlot = null;
+ }
}
}
}
@@ -142,11 +171,11 @@ public class LisaacCompletionParser extends LisaacParser {
}
- public Prototype readReceiver(int startOffset, int endOffset, Prototype currentPrototype) throws CoreException {
+ public Prototype readReceiver(int startOffset, int endOffset, Prototype current) throws CoreException {
Prototype result=null;
IType type;
- this.currentPrototype = currentPrototype;//LisaacModel.getCurrentPrototype();
+ currentPrototype = current;
currentSlot = currentPrototype.getSlot(startOffset);
this.endOffset = endOffset;
@@ -165,6 +194,14 @@ public class LisaacCompletionParser extends LisaacParser {
currentPrototype = save;
}
}
+ // genericity TypeParameter -> TypeSimple
+ if (type instanceof TypeParameter && lastGenericType != null) {
+ int index = currentPrototype.getGenericIndex((TypeParameter) type);
+ if (index != -1) {
+ ITypeMono realType = lastGenericType.getGenericElt(index);
+ currentPrototype = findPrototype(realType.toString());
+ }
+ }
result = currentPrototype;
}
}
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/SectionContext.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/SectionContext.java
index 3596bdf..d58bf2e 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/SectionContext.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/SectionContext.java
@@ -1,8 +1,11 @@
package org.lisaac.ldt.model;
+import java.util.ArrayList;
+
import org.lisaac.ldt.model.items.Prototype;
import org.lisaac.ldt.model.items.Section;
import org.lisaac.ldt.model.types.ITypeMono;
+import org.lisaac.ldt.model.types.TypeParameter;
public class SectionContext implements ILisaacContext {
@@ -135,24 +138,33 @@ public class SectionContext implements ILisaacContext {
//
// Generic loader.
//
- // TODO error for non generic object
if (parser.readIdentifier()) {
return false;
// TODO syntax identifier : PROTO
} else if (parser.readCapIdentifier()) {
- // TODO error Identifier parameter type is needed.
-
+ if (! parser.isParameterType) {
+ parser.getReporter().syntaxError("Identifier parameter type is needed.", parser.getLine());
+ }
+ ArrayList<TypeParameter> genlist = new ArrayList<TypeParameter>();
+ TypeParameter param = TypeParameter.get(parser.getLastString());
+ genlist.add(param);
+
while (parser.readCharacter(',')) {
- // TODO error Identifier parameter type is needed.
if (! parser.readCapIdentifier()) {
parser.getReporter().syntaxError("Identifier parameter type is needed.", parser.getLine());
return false;
}
+ if (! parser.isParameterType) {
+ parser.getReporter().syntaxError("Identifier parameter type is needed.", parser.getLine());
+ }
+ param = TypeParameter.get(parser.getLastString());
+ genlist.add(param);
}
if (! parser.readCharacter(')')) {
parser.getReporter().syntaxError("Added ')'.", parser.getLine());
return false;
}
+ prototype.setGenericList(genlist.toArray(new TypeParameter[genlist.size()]));
} else {
parser.getReporter().syntaxError("Identifier parameter type is needed.", parser.getLine());
return false;
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/items/Prototype.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/items/Prototype.java
index 9874a60..1773ad4 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/items/Prototype.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/items/Prototype.java
@@ -25,6 +25,7 @@ import org.lisaac.ldt.model.LisaacParser;
import org.lisaac.ldt.model.Position;
import org.lisaac.ldt.model.types.IType;
import org.lisaac.ldt.model.types.ITypeMono;
+import org.lisaac.ldt.model.types.TypeParameter;
import org.lisaac.ldt.outline.OutlineItem;
import org.lisaac.ldt.outline.OutlinePrototype;
import org.lisaac.ldt.outline.OutlineSection;
@@ -41,6 +42,9 @@ public class Prototype {
protected HashMap<String, Slot> parentList;
protected HashMap<String, Slot> slotList;
+ // genericity
+ protected TypeParameter[] genericList;
+
// hover informations
protected String headerData;
protected String headerComment;
@@ -87,6 +91,21 @@ public class Prototype {
return name;
}
+ public int getGenericIndex(TypeParameter param) {
+ if (genericList != null) {
+ for (int i=0; i<genericList.length; i++) {
+ if (genericList[i].equals(param)) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+ public void setGenericList(TypeParameter[] list) {
+ genericList = list;
+ }
+
public void setHeaderComment(String comment) {
this.headerComment = comment;
}
@@ -107,7 +126,7 @@ public class Prototype {
}
}
-
+
public LisaacParser openParser() {
parser.initialize();
return parser;
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeGeneric.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeGeneric.java
index be734f1..f3d9573 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeGeneric.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeGeneric.java
@@ -8,4 +8,8 @@ public class TypeGeneric extends TypeStyle {
super(name, style);
listType = lt;
}
+
+ public ITypeMono getGenericElt(int index) {
+ return listType[index];
+ }
}
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeParameter.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeParameter.java
index 9d2a1e1..4959067 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeParameter.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeParameter.java
@@ -1,5 +1,7 @@
package org.lisaac.ldt.model.types;
+import java.util.HashMap;
+
/**
* Parameter type for argument define.
*/
@@ -8,4 +10,16 @@ public class TypeParameter extends TypeSimple {
public TypeParameter(String name) {
super(name);
}
+
+ public static TypeParameter get(String n) {
+ TypeParameter result=null;
+
+ if (dico != null && dico.containsKey(n)) {
+ result = (TypeParameter) dico.get(n);
+ }
+ if (result == null) {
+ result = new TypeParameter(n);
+ }
+ return result;
+ }
}
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeSimple.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeSimple.java
index 3c91bbc..7198ef4 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeSimple.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/model/types/TypeSimple.java
@@ -6,7 +6,7 @@ import org.lisaac.ldt.model.ILisaacModel;
public class TypeSimple implements ITypeMono {
- private static HashMap<String,TypeSimple> dico;
+ protected static HashMap<String,TypeSimple> dico;
protected String name;
diff --git a/editor/eclipse/eclisaac/src/org/lisaac/ldt/views/LisaacOutlineView.java b/editor/eclipse/eclisaac/src/org/lisaac/ldt/views/LisaacOutlineView.java
index 17c08d3..8169ca8 100644
--- a/editor/eclipse/eclisaac/src/org/lisaac/ldt/views/LisaacOutlineView.java
+++ b/editor/eclipse/eclisaac/src/org/lisaac/ldt/views/LisaacOutlineView.java
@@ -38,7 +38,7 @@ import org.lisaac.ldt.outline.OutlineLabelProvider;
public class LisaacOutlineView extends ContentOutlinePage implements IDocumentListener {
/** the delay before the outline view is updated. */
- private static final long UPDATE_DELAY = 2000;
+ private static final long UPDATE_DELAY = 1500;
/** the document provider. */
private IDocumentProvider documentProvider;
diff --git a/make.lip b/make.lip
index c016157..f05a39c 100644
--- a/make.lip
+++ b/make.lip
@@ -303,4 +303,4 @@ Section Public
// Statistic information.
(
is_statistic := TRUE;
- );
\ No newline at end of file
+ );
--
Lisaac compiler
More information about the Lisaac-commits
mailing list