nice-commit Mailing List for The Nice Programming Language (Page 91)
Brought to you by:
bonniot
You can subscribe to this list here.
2003 |
Jan
|
Feb
(60) |
Mar
(125) |
Apr
(183) |
May
(140) |
Jun
(227) |
Jul
(141) |
Aug
(181) |
Sep
(75) |
Oct
(89) |
Nov
(187) |
Dec
(162) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(69) |
Feb
(197) |
Mar
(98) |
Apr
(26) |
May
(10) |
Jun
(85) |
Jul
(88) |
Aug
(79) |
Sep
(80) |
Oct
(81) |
Nov
(53) |
Dec
(109) |
2005 |
Jan
(68) |
Feb
(77) |
Mar
(232) |
Apr
(79) |
May
(37) |
Jun
(37) |
Jul
(3) |
Aug
(18) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(10) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
(9) |
2007 |
Jan
(2) |
Feb
(8) |
Mar
(2) |
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
(17) |
Dec
(6) |
2008 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/preferences In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/ui/preferences Added Files: _preferences.nice Log Message: initial import --- NEW FILE: _preferences.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui.preferences; |
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/util In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/util Added Files: Resources.nice Resources.properties _util.nice Log Message: initial import --- NEW FILE: Resources.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.util; let String RESOURCE_BUNDLE= "nice.eclipse.util.Resources"; let ResourceBundle resourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE); String getResourceString(String key) { try { return resourceBundle.getString(key); } catch (MissingResourceException e) { return "!" + key + "!"; } } String getFormattedResourceString(String key, String arg) { return getFormattedResourceString(key, [arg]); } String getFormattedResourceString(String key, String[] args) { return MessageFormat.format(getResourceString(key), args); } ResourceBundle getResourceBundle() { return resourceBundle; } --- NEW FILE: Resources.properties --- ######################################### # Wizards ######################################### NewProjectCreationWizard.windowTitle=New Nice Project NewProjectCreationWizard.projectCreationMessage=Creating new Nice Project WizardNewProjectCreationPage.pageName=Create Nice Project WizardNewProjectCreationPage.pageTitle=Nice Project WizardNewProjectCreationPage.pageDescription=Create a new Nice Project --- NEW FILE: _util.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.util; import java.text.*; import java.util.*; import org.eclipse.core.resources.*; <!T> String formatMessage(String, T[]) = native String MessageFormat.format(String, Object[]); //String formatMessage(String, String[]) = native String MessageFormat.format(String, Object[]); IWorkspace getWorkspace() = native IWorkspace ResourcesPlugin.getWorkspace(); |
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/editors In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/ui/editors Added Files: NiceFileEditor.nice _editors.nice Log Message: initial import --- NEW FILE: NiceFileEditor.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui.editors; class NiceFileEditor extends TextEditor { initializeEditor() { this.configurePreferenceStore(); } setPreferenceStore(preferenceStore) { super; } void configurePreferenceStore() { IPreferenceStore prefStore = getNicePlugin().getPreferenceStore(); this.setPreferenceStore(prefStore); WorkbenchChainedTextFontFieldEditor.startPropagate(prefStore, JFaceResources.TEXT_FONT); } } --- NEW FILE: _editors.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui.editors; import org.eclipse.ui.editors.text.*; import org.eclipse.jface.preference.*; import org.eclipse.jface.resource.*; import org.eclipse.ui.texteditor.*; import nice.eclipse.core; |
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/ui Added Files: NicePerspectiveFactory.nice _ui.nice Log Message: initial import --- NEW FILE: NicePerspectiveFactory.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui; class NicePerspectiveFactory implements IPerspectiveFactory { createInitialLayout(pageLayout) { if (pageLayout == null) return; String existingEditorArea = pageLayout.getEditorArea(); IFolderLayout niceResourcesArea = pageLayout.createFolder("niceResourcesArea", IPageLayout.LEFT, float(0.25), existingEditorArea); niceResourcesArea.addView(NICE_RESOURCES_VIEW_ID); IFolderLayout consoleArea = pageLayout.createFolder("consoleArea", IPageLayout.BOTTOM, float(0.75), existingEditorArea); consoleArea.addView(IDebugUIConstants.ID_CONSOLE_VIEW); pageLayout.addActionSet(IDebugUIConstants.LAUNCH_ACTION_SET); pageLayout.addShowViewShortcut(IDebugUIConstants.ID_CONSOLE_VIEW); pageLayout.addShowViewShortcut(NICE_RESOURCES_VIEW_ID); } } --- NEW FILE: _ui.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui; import org.eclipse.ui.*; import org.eclipse.debug.ui.*; import nice.eclipse.core; |
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/wizards In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/ui/wizards Added Files: NewProjectCreationWizard.nice _wizards.nice Log Message: initial import --- NEW FILE: NewProjectCreationWizard.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui.wizards; public class NewProjectCreationWizard extends BasicNewResourceWizard implements IExecutableExtension { WizardNewProjectCreationPage newProjWizardPage = cast(null); IProject newProject = cast(null); ?IConfigurationElement configElement = null; //IWorkbench workbench = cast(null); //IStructuredSelection currentSelection = cast(null); // initializer { this.setWindowTitle(getResourceString("NewProjectCreationWizard.windowTitle")); } void setNewProject(IProject project) { newProject = project; } selectAndReveal(newResource) { super; //BasicNewResourceWizard.selectAndReveal(newResource, workbench.getActiveWorkbenchWindow()); } addPages() { super; newProjWizardPage = new WizardNewProjectCreationPage( getResourceString("WizardNewProjectCreationPage.pageName")); newProjWizardPage.setTitle(getResourceString("WizardNewProjectCreationPage.pageTitle")); newProjWizardPage.setDescription(getResourceString("WizardNewProjectCreationPage.pageDescription")); this.addPage(newProjWizardPage); } performFinish() { System.out.println("NewProjectCreationWizard.performFinish()"); IRunnableWithProgress r = new WorkspaceModifyDelegatingOperation(new ProjectCreationRunnable(wizard: this, wizardPage: newProjWizardPage)); try { this.getContainer().run(false, true, r); } catch (Exception e) { java.lang.reflect.InvocationTargetException ex = cast(e); //CoreException exx = cast(ex); //println(exx.getStatus()); //exx.printStackTrace(); e.printStackTrace(); return false; } BasicNewProjectResourceWizard.updatePerspective(configElement); this.selectAndReveal(newProject); return true; } setInitializationData(configElem, propertyName, data) { configElement = configElem; } } /* init(wiz@NewProjectCreationWizard(BasicNewResourceWizard), theWorkbench, theCurrentSelection) { super; wiz.workbench = notNull(theWorkbench); wiz.currentSelection = notNull(theCurrentSelection); } */ class ProjectCreationRunnable implements IRunnableWithProgress { NewProjectCreationWizard wizard; WizardNewProjectCreationPage wizardPage; run(monitor) { //System.out.println("IRunnableWithProgress.run()"); notNull(monitor).beginTask("Create new Nice project", int(10)); IProject newProject = wizardPage.getProjectHandle(); //System.out.println(" newProject: "+newProject); wizard.setNewProject(newProject); IWorkspace workspace = getWorkspace(); IProjectDescription description = workspace.newProjectDescription(newProject.getName()); IPath path = Platform.getLocation(); IPath customPath = wizardPage.getLocationPath(); if (! path.equals(customPath)) { path = customPath; description.setLocation(path); } try { //System.out.println(" newProject.exist?: "+newProject.exists()); if (! newProject.exists()) newProject.create(description, new SubProgressMonitor(monitor, 1)); //System.out.println(" newProject.isOpen?: "+newProject.isOpen()); if (! newProject.isOpen()) newProject.open(new SubProgressMonitor(monitor, 1)); //System.out.println(" addNiceNature"); addNiceNature(newProject, new SubProgressMonitor(monitor, 1)); } catch(Exception e) { e.printStackTrace(); } finally { notNull(monitor).done(); } } } void addNiceNature(IProject project, IProgressMonitor monitor) { //println("monitor: "+monitor); //println("project: "+project); if (!project.hasNature(NICE_NATURE_ID)) { IProjectDescription description = project.getDescription(); //println("description: "+description); //println("description.getNatureIds(): "+description.getNatureIds()); description.setNatureIds(description.getNatureIds()+[NICE_NATURE_ID]); try { project.setDescription(description, monitor); } catch(CoreException e) { println("getMessage: "+e.getStatus().getMessage()); e.getStatus().getException().printStackTrace(); } } } --- NEW FILE: _wizards.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.ui.wizards; import org.eclipse.ui.*; import org.eclipse.ui.wizards.newresource.*; import org.eclipse.ui.dialogs.*; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.jdt.internal.ui.actions.*; import org.eclipse.jface.operation.*; import org.eclipse.jface.viewers.*; import org.eclipse.ui.actions.*; import nice.eclipse.core; import nice.eclipse.ui; import nice.eclipse.util; |
From: <ag...@us...> - 2003-08-01 20:09:46
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/core/element In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/core/element Added Files: INiceElement.nice NiceFile.nice _element.nice Log Message: initial import --- NEW FILE: INiceElement.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core.element; interface INiceElement { public IResource getUnderlyingResource(); } --- NEW FILE: NiceFile.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core.element; class NiceFile implements INiceElement { IFile underlyingFile; getUnderlyingResource() = underlyingFile; } --- NEW FILE: _element.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core.element; import org.eclipse.core.resources.*; let String NICE_FILE_EXTENSION = "nice"; |
From: <ag...@us...> - 2003-08-01 20:09:45
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/core In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/core Added Files: NiceAdapterFactory.nice NicePlugin.nice NiceProject.nice _core.nice Log Message: initial import --- NEW FILE: NiceAdapterFactory.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core; class NiceElementAdapterFactory implements IAdapterFactory { getAdapter(adaptableObject, adapterType) { INiceElement niceElement = cast(adaptableObject); if (IResource.class.equals(adapterType)) return this.getResource(niceElement); return null; } getAdapterList() = ELEMENT_ADAPTERS_LIST; IResource getResource(INiceElement niceElement) = niceElement.getUnderlyingResource(); } let Class[] ELEMENT_ADAPTERS_LIST = [IResource.class]; let Class[] RESOURCE_ADAPTERS_LIST = [INiceElement.class, NiceFile.class, NiceProject.class]; class NiceResourceAdapterFactory implements IAdapterFactory { getAdapter(adaptableObject, adapterType) { if (NiceFile.class.equals(adapterType)) return cast(createNiceFileResource(cast(adaptableObject))); if (NiceProject.class.equals(adapterType)) return cast(createNiceProjectResource(cast(adaptableObject))); if (INiceElement.class.equals(adapterType)) { if (adaptableObject instanceof IFile) return cast(createNiceFileResource(cast(adaptableObject))); if (adaptableObject instanceof IProject) return cast(createNiceProjectResource(cast(adaptableObject))); } return null; } getAdapterList() = RESOURCE_ADAPTERS_LIST; } ?NiceFile createNiceFileResource(IFile file) { //System.out.println("NiceCore.createFile() file: "+file); if (NICE_FILE_EXTENSION.equalsIgnoreCase(file.getFileExtension())) return new NiceFile(underlyingFile:file); return null; } ?NiceProject createNiceProjectResource(IProject aProject) { //System.out.println("NiceCore.createProject() project: "+aProject); try { if (aProject.hasNature(NICE_NATURE_ID)) { NiceProject project = new NiceProject(); project.setProject(aProject); return project; } } catch (CoreException e) { System.err.println("Exception occurred in createNiceProjectResource: " + e.toString()); e.printStackTrace(); } return null; } //?Object getAdapter(IAdapterFactory, Object, Class) //<?T, !U> T getAdapter(IAdapterFactory, U, Class) ?IResource getAdapter(IAdapterFactory, Object, Class) = native Object IAdapterFactory.getAdapter(Object, Class); --- NEW FILE: NicePlugin.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core; class NicePlugin extends AbstractUIPlugin { // initializer { // is declared in _core.nice nicePluginInstance = this; } startup() { super; IAdapterManager manager = Platform.getAdapterManager(); manager.registerAdapters(new NiceElementAdapterFactory(), INiceElement.class); manager.registerAdapters(new NiceResourceAdapterFactory(), IResource.class); } } --- NEW FILE: NiceProject.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core; class NiceProject implements IProjectNature, INiceElement { IProject project = cast(null); getUnderlyingResource() = project; configure() { this.addToBuildSpec(NICE_BUILDER_ID); } deconfigure() {} getProject() = project; setProject(aProject) { if (aProject == null) return; project = aProject; } void addToBuildSpec(String builderId) { IProjectDescription description = project.getDescription(); ?ICommand niceCommand = this.getNiceCommand(description); if (niceCommand == null) { // Add a Nice command to the build spec ICommand command = description.newCommand(); command.setBuilderName(builderId); this.setNiceCommand(description, command); } } ?ICommand getNiceCommand(IProjectDescription description) { ICommand[] commands = description.getBuildSpec(); for (int i = 0; i < commands.length; ++i) { if (commands[i] .getBuilderName() .equals(NICE_BUILDER_ID)) { return commands[i]; } } return null; } void setNiceCommand(IProjectDescription description, ICommand newCommand) { ICommand[] oldCommands = description.getBuildSpec(); ?ICommand oldNiceCommand = this.getNiceCommand(description); ICommand[] newCommands; if (oldNiceCommand == null) { newCommands = oldCommands+[newCommand]; } else { for (int i = 0, max = oldCommands.length; i < max; i++) { if (oldCommands[i] == oldNiceCommand) { oldCommands[i] = newCommand; break; } } newCommands = oldCommands; } // Commit the spec change into the project description.setBuildSpec(newCommands); project.setDescription(description, null); } } let String MAIN_PACKAGE_STORE_ID = NICE_PLUGIN_ID + ".main_package_store_id"; let QualifiedName MAIN_PACKAGE_STORE_ID_QNAME = new QualifiedName(NICE_PLUGIN_ID, NICE_PLUGIN_ID + ".main_package_store_id"); //let QualifiedName MAIN_PACKAGE_STORE_ID_QNAME = new QualifiedName(NICE_PLUGIN_ID, MAIN_PACKAGE_STORE_ID); //let String CLASSPATH_STORE_ID = NICE_PLUGIN_ID + ".classpath_store_id"; let QualifiedName CLASSPATH_STORE_ID_QNAME = new QualifiedName(NICE_PLUGIN_ID, NICE_PLUGIN_ID + ".classpath_store_id"); //let String SOURCEPATH_STORE_ID = NICE_PLUGIN_ID + ".sourcepath_store_id"; let QualifiedName SOURCEPATH_STORE_ID_QNAME = new QualifiedName(NICE_PLUGIN_ID, NICE_PLUGIN_ID + ".sourcepath_store_id"); //let String JAR_NAME_STORE_ID = NICE_PLUGIN_ID + ".jar_name_store_id"; let QualifiedName JAR_NAME_STORE_ID_QNAME = new QualifiedName(NICE_PLUGIN_ID, NICE_PLUGIN_ID + ".jar_name_store_id"); String getMainPackageProperty(IResource resource) { ?String prop = resource.getPersistentProperty(MAIN_PACKAGE_STORE_ID_QNAME); if (prop == null) return ""; return prop; } String getClasspathProperty(IResource resource) { ?String prop = resource.getPersistentProperty(CLASSPATH_STORE_ID_QNAME); if (prop == null) return ""; return prop; } String getSourcepathProperty(IResource resource) { ?String prop = resource.getPersistentProperty(SOURCEPATH_STORE_ID_QNAME); if (prop == null) return ""; return prop; } String getJarNameProperty(IResource resource) { ?String prop = resource.getPersistentProperty(JAR_NAME_STORE_ID_QNAME); if (prop == null) return "project.jar"; return prop; } --- NEW FILE: _core.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core; import java.util.*; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.ui.plugin.*; import nice.eclipse.core.element; // force to compile import nice.eclipse.ui.wizards; import nice.eclipse.ui.views; import nice.eclipse.ui.editors; import nice.eclipse.ui.preferences; import nice.eclipse.ui.properties; import nice.eclipse.core.builder; let String NICE_PLUGIN_ID = "net.sf.nice"; let String NICE_RESOURCES_VIEW_ID = NICE_PLUGIN_ID + ".nice_resources_view"; let String NICE_NATURE_ID = NICE_PLUGIN_ID + ".nice_nature"; let String NICE_BUILDER_ID = NICE_PLUGIN_ID + ".nice_builder"; // will be set in the initializer of Niceplugin var NicePlugin nicePluginInstance = cast(null); NicePlugin getNicePlugin() = nicePluginInstance; |
From: <ag...@us...> - 2003-08-01 20:09:45
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/core/builder In directory sc8-pr-cvs1:/tmp/cvs-serv919/src/nice/eclipse/core/builder Added Files: NiceBuilder.nice _builder.nice Log Message: initial import --- NEW FILE: NiceBuilder.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core.builder; class NiceBuilder extends IncrementalProjectBuilder { IProject currentProject = cast(null); ?IProgressMonitor monitor = cast(null); BuildNotifier notifier = cast(null); build(kind, argsMap, aMonitor) { //println("NiceBuilder.build()"); currentProject = this.getProject(); monitor = aMonitor; //if (currentProject.isAccessible()) // return new IProject[0]; notifier = new BuildNotifier(monitor: monitor, project: currentProject); notifier.begin(); notifier.checkCancel(); this.buildAll(); notifier.done(); //return new IProject[0]; return null; } void buildAll() { NicePluginCompilationListener embedded = new NicePluginCompilationListener(monitor: monitor, notifier: notifier, project: currentProject); Plugin plugin = getNicePlugin(); try { this.getProject().deleteMarkers( NICE_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); Compilation compilation = bossa.modules.fun.createCompilation(embedded); File projectFolder = currentProject.getLocation().toFile(); compilation.sourcePath = new File(projectFolder, getSourcepathProperty(currentProject)).toString(); compilation.destinationDir = compilation.sourcePath; // sourcePath must be before this line compilation.output = new File(projectFolder, getJarNameProperty(currentProject)).getAbsolutePath(); compilation.packagePath = getClasspathProperty(currentProject); //println("sourcePath: " + compilation.sourcePath); //println("destinationDir: " + compilation.destinationDir); nice.tools.compiler.fun.compile( compilation, getMainPackageProperty(currentProject), null, //output, null, //native_compiler, false //editor ); //int retval = console.statusCode; } catch (Exception e) { e.printStackTrace(); } } } <T> void setAttribute (IMarker, String, ?T) = native void IMarker.setAttribute(String, Object); void setAttribute (IMarker, String, int) = native void IMarker.setAttribute(String, int); class NicePluginCompilationListener implements CompilationListener { ?IProgressMonitor monitor; BuildNotifier notifier; IProject project; error(location, message) {println("nicec error: "+message);} error(loc...@Lo...urce, message) { IResource resource = this.getAffectedResource(location); //println("nicec error in source: "+resource+" line: "+location.getLine()+":"+ // location.getColumn()+"\n"+message); try { IMarker marker = resource.createMarker(NICE_MODEL_PROBLEM_MARKER); marker.setAttribute(IMarker.MESSAGE, message); marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR); marker.setAttribute(IMarker.LINE_NUMBER, location.getLine()); marker.setAttribute(IMarker.CHAR_START, location.getColumn()); } catch (Throwable e) { e.printStackTrace(); } } warning(location, message) {println("nicec warning: "+message);} warning(loc...@Lo...urce, message) { IResource resource = this.getAffectedResource(location); //println("nicec warning in source: "+resource+" line: "+location.getLine()+":"+ // location.getColumn()+"\n"+message); try { IMarker marker = resource.createMarker(NICE_MODEL_PROBLEM_MARKER); marker.setAttribute(IMarker.MESSAGE, message); marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING); marker.setAttribute(IMarker.LINE_NUMBER, location.getLine()); marker.setAttribute(IMarker.CHAR_START, location.getColumn()); } catch (CoreException e) { e.printStackTrace(); } } /** A bug occured in the compiler. @param url the adress where a bug report should be submitted. */ bug(stackTrace, url) { System.out.println( "nicec bug stackTrace: " + stackTrace + " url: " + url); } /** Reports the progress of compilation. phase can be: parsing, type-checking, generating code, ... the package can be null if the phase applies to the whole program (testing dispatch, creating the archive, compiling to native code, ...). */ progress(packageName, phase) { let monitor = this.monitor; if (monitor == null) return; monitor.subTask("" + phase + " package: " + packageName); } /** Gives an approximation of how much of the compilation has been completed. */ progress(proportion) { notifier.updateProgress(proportion); } IResource getAffectedResource(Location); getAffectedResource(location) { throw new RuntimeException("getAffectedResource() not implemented"); } getAffectedResource(loc...@Lo...urce) { String projectPath = project.getLocation().toFile().getAbsolutePath(); String resourcePath = location.getFile().getAbsolutePath(); Path path = new Path(resourcePath.substring(projectPath.length())); return project.getFile(path); } } public class BuildNotifier { ?IProgressMonitor monitor; IProject project; int workDone = 0; int totalWork = 1000000; float proportionComplete = 0f; void begin() { if (monitor == null) return; notNull(monitor).beginTask("", totalWork); //$NON-NLS-1$ } void checkCancel() { if (monitor == null) return; if (notNull(monitor).isCanceled()) throw new OperationCanceledException(); } public void done() { this.updateProgress(1.0f); if (monitor == null) return; notNull(monitor).done(); } public void updateProgress(float newProportionComplete) { if (newProportionComplete > proportionComplete) { proportionComplete = Math.min(newProportionComplete, 1.0f); int work = Math.round(proportionComplete * totalWork); if (work > workDone) { if (monitor == null) return; notNull(monitor).worked(work - workDone); workDone = work; } } } public void updateProgressDelta(float proportionWorked) { this.updateProgress(proportionComplete + proportionWorked); } } --- NEW FILE: _builder.nice --- /**************************************************************************/ /* Nice Eclipse-Plugin */ /* (c) Alex Greif 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.eclipse.core.builder; import java.io.*; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import bossa.modules.*; import bossa.util.*; import nice.eclipse.core; ?(IProject[]) build(IncrementalProjectBuilder, int, ?Map<String,String>, ?IProgressMonitor) = native IProject[] IncrementalProjectBuilder.build(int, Map, IProgressMonitor); let String NICE_MODEL_PROBLEM_MARKER = NICE_PLUGIN_ID + ".problem"; //$NON-NLS-1$ //let String NICE_MODEL_WARNING_MARKER = NICE_PLUGIN_ID + ".warning"; //$NON-NLS-1$ |
From: <ag...@us...> - 2003-08-01 20:09:45
|
Update of /cvsroot/nice/eclipse/src In directory sc8-pr-cvs1:/tmp/cvs-serv919/src Added Files: build.properties plugin.xml Log Message: initial import --- NEW FILE: build.properties --- source.niceplugin.jar = src/ bin.includes = plugin.xml,\ *.jar,\ niceplugin.jar --- NEW FILE: plugin.xml --- <?xml version="1.0" encoding="UTF-8"?> <plugin id="net.sf.nice" name="Nice Plug-in" version="0.1.4" provider-name="Alex Greif" class="nice.eclipse.core.NicePlugin"> <runtime> <library name="niceplugin.jar"> <export name="*"/> </library> <library name="lib/nice.jar"> <export name="*"/> </library> </runtime> <requires> <import plugin="org.eclipse.core.resources"/> <import plugin="org.eclipse.ui"/> <import plugin="org.eclipse.debug.ui"/> </requires> <!-- =================================================================================== --> <!-- Extension: Nice Nature --> <!-- =================================================================================== --> <extension point="org.eclipse.core.resources.natures" id="nice_nature" name="NiceNatureName"> <runtime> <run class="nice.eclipse.core.NiceProject"> </run> </runtime> </extension> <!-- =================================================================================== --> <!-- Extension: Nice file type --> <!-- =================================================================================== --> <extension point="org.eclipse.team.core.fileTypes"> <fileTypes extension="nice" type="text"/> </extension> <!-- =================================================================================== --> <!-- Extension: Wizards --> <!-- =================================================================================== --> <extension point="org.eclipse.ui.newWizards"> <category id="net.sf.nice.nice_wizard_category" name="Nice"> </category> <wizard id="net.sf.nice.new_nice_project_creation_wizard" name="NewNiceProject.label" class="nice.eclipse.ui.wizards.NewProjectCreationWizard" category="net.sf.nice.nice_wizard_category" project="true" finalPerspective="net.sf.nice.nice_perspective" preferredPerspectives="net.sf.nice.nice_perspective" icon="icons/full/ctool16/newjprj_wiz.gif"> <description>NewNiceProject.description</description> </wizard> </extension> <!-- =================================================================================== --> <!-- Extension: Perspectives --> <!-- =================================================================================== --> <extension point="org.eclipse.ui.perspectives"> <perspective id="net.sf.nice.nice_perspective" name="Nice Perspective" icon="icons/full/cview16/nperspective.gif" class="nice.eclipse.ui.NicePerspectiveFactory"> </perspective> </extension> <!-- =================================================================================== --> <!-- Extension: Views --> <!-- =================================================================================== --> <extension point="org.eclipse.ui.views"> <view name="Nice resources View" icon="icons/full/ctool16/nice.png" class="nice.eclipse.ui.views.NiceResourcesView" id="net.sf.nice.nice_resources_view"> </view> </extension> <!-- =================================================================================== --> <!-- Extension: Editors --> <!-- =================================================================================== --> <extension point="org.eclipse.ui.editors"> <editor name="Nice Editor" icon="icons/full/ctool16/nice_page.gif" extensions="nice" class="nice.eclipse.ui.editors.NiceFileEditor" id="net.sf.nice.nice_file_editor"> <!--contributorClass="net.sf.nice.internal.ui.niceeditor.NiceEditorActionContributor"--> </editor> </extension> <!-- =================================================================================== --> <!-- Extension: Properties --> <!-- =================================================================================== --> <extension point="org.eclipse.ui.propertyPages"> <page objectClass="org.eclipse.core.resources.IProject" name="Nice Project Properties" class="nice.eclipse.ui.properties.NiceProjectPropertyPage" id="net.sf.nice.nice_project_property_page"> <filter name="nature" value="net.sf.nice.nice_nature"> </filter> </page> <page objectClass="nice.eclipse.core.NiceProject" name="Nice Project Properties" class="nice.eclipse.ui.properties.NiceProjectPropertyPage" id="net.sf.nice.nice_project_property_page"> <filter name="nature" value="net.sf.nice.nice_nature"> </filter> </page> </extension> <!-- =================================================================================== --> <!-- Extension: Nice Builder --> <!-- =================================================================================== --> <extension point="org.eclipse.core.resources.builders" id="nice_builder" name="Nice Builder"> <builder> <run class="nice.eclipse.core.builder.NiceBuilder"> </run> </builder> </extension> <!-- =================================================================================== --> <!-- Extension: Nice Markers --> <!-- =================================================================================== --> <extension id="problem" point="org.eclipse.core.resources.markers" name="Nice Problem"> <super type="org.eclipse.core.resources.problemmarker"/> <super type="org.eclipse.core.resources.textmarker"/> <persistent value="true"/> <attribute name="id"/> <attribute name="flags"/> <attribute name="arguments"/> </extension> <!--<extension id="warning" point="org.eclipse.core.resources.markers" name="Nice Warning"> <super type="org.eclipse.core.resources.warningmarker"/> <super type="org.eclipse.core.resources.textmarker"/> <persistent value="true"/> <attribute name="id"/> <attribute name="flags"/> <attribute name="arguments"/> </extension> --> </plugin> |
From: <ag...@us...> - 2003-08-01 20:04:05
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/core/element In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/core/element Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/core/element added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:05
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/views In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/ui/views Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/ui/views added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:04
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/preferences In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/ui/preferences Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/ui/preferences added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:04
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/wizards In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/ui/wizards Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/ui/wizards added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:04
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/editors In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/ui/editors Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/ui/editors added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:03
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/core/builder In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/core/builder Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/core/builder added to the repository |
From: <ag...@us...> - 2003-08-01 20:04:03
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse/ui/properties In directory sc8-pr-cvs1:/tmp/cvs-serv32347/src/nice/eclipse/ui/properties Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse/ui/properties added to the repository |
From: <ag...@us...> - 2003-08-01 20:01:44
|
Update of /cvsroot/nice/eclipse/src/nice/eclipse In directory sc8-pr-cvs1:/tmp/cvs-serv31698/src/nice/eclipse Log Message: Directory /cvsroot/nice/eclipse/src/nice/eclipse added to the repository |
From: <ag...@us...> - 2003-08-01 20:01:02
|
Update of /cvsroot/nice/eclipse/src/nice In directory sc8-pr-cvs1:/tmp/cvs-serv31476/src/nice Log Message: Directory /cvsroot/nice/eclipse/src/nice added to the repository |
From: <ag...@us...> - 2003-08-01 19:59:20
|
Update of /cvsroot/nice/eclipse/src In directory sc8-pr-cvs1:/tmp/cvs-serv30732/src Log Message: Directory /cvsroot/nice/eclipse/src added to the repository |
From: <bo...@us...> - 2003-08-01 19:19:38
|
Update of /cvsroot/nice/Nice/regtest In directory sc8-pr-cvs1:/tmp/cvs-serv21721/regtest Modified Files: regtest Log Message: Return a non-zero exit code when some test failed. Index: regtest =================================================================== RCS file: /cvsroot/nice/Nice/regtest/regtest,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** regtest 27 Dec 2002 19:29:34 -0000 1.24 --- regtest 1 Aug 2003 19:19:35 -0000 1.25 *************** *** 149,150 **** --- 149,155 ---- status done + + [ $pkg = $pkg_ok ] && exit 0 + + # There was some error found + exit 1 |
From: <bo...@us...> - 2003-08-01 19:15:44
|
Update of /cvsroot/nice/Nice/regtest/coreJava In directory sc8-pr-cvs1:/tmp/cvs-serv20884/regtest/coreJava Modified Files: coreJava.code Log Message: Removed usage of "final" for a local variable, which is not valid in Nice anymore. Index: coreJava.code =================================================================== RCS file: /cvsroot/nice/Nice/regtest/coreJava/coreJava.code,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** coreJava.code 4 Jun 2003 17:06:54 -0000 1.25 --- coreJava.code 1 Aug 2003 19:15:41 -0000 1.26 *************** *** 139,144 **** } ! // final variables ! final String constant = "Constant String"; p(constant); --- 139,144 ---- } ! // String variables ! String constant = "Constant String"; p(constant); |
From: <bo...@us...> - 2003-07-31 23:40:26
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv10471/src/bossa/syntax Modified Files: NiceClass.java FormalParameters.java Log Message: Don't take field overrides to compute the default native constructors. Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** NiceClass.java 31 Jul 2003 18:45:35 -0000 1.55 --- NiceClass.java 31 Jul 2003 23:40:23 -0000 1.56 *************** *** 252,256 **** { if (value != null) ! inherited[i] = asParameter(scope); else inherited[i].resetType(type); --- 252,257 ---- { if (value != null) ! inherited[i] = new FormalParameters.OptionalParameter ! (type, sym.getName(), true, value, true); else inherited[i].resetType(type); Index: FormalParameters.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/FormalParameters.java,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** FormalParameters.java 31 Jul 2003 18:45:35 -0000 1.29 --- FormalParameters.java 31 Jul 2003 23:40:23 -0000 1.30 *************** *** 46,49 **** --- 46,51 ---- Expression value() { return null; } + boolean isOverriden() { return false; } + void resolve() { *************** *** 188,191 **** --- 190,201 ---- } + public OptionalParameter + (Monotype type, LocatedString name, boolean nameRequired, + Expression value, boolean overriden) + { + this(type, name, nameRequired, value); + this.overriden = overriden; + } + Expression value() { *************** *** 195,198 **** --- 205,212 ---- Expression defaultValue; + boolean overriden; + + boolean isOverriden() { return overriden; } + void resolve() { *************** *** 294,298 **** boolean hasDefaultValue(int rank) { ! return parameters[rank].value() != null; } --- 308,313 ---- boolean hasDefaultValue(int rank) { ! Parameter p = parameters[rank]; ! return p.value() != null && ! p.isOverriden(); } |
From: <bo...@us...> - 2003-07-31 23:40:26
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv10471/testsuite/compiler/classes Modified Files: field-override.testsuite Log Message: Don't take field overrides to compute the default native constructors. Index: field-override.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/field-override.testsuite,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** field-override.testsuite 31 Jul 2003 19:56:05 -0000 1.2 --- field-override.testsuite 31 Jul 2003 23:40:23 -0000 1.3 *************** *** 157,161 **** } ! /// PASS bug /// Toplevel class A { --- 157,161 ---- } ! /// PASS /// Toplevel class A { |
From: <bo...@us...> - 2003-07-31 22:44:53
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv21461/src/bossa/syntax Modified Files: GlobalVarDeclaration.java AST.java Log Message: Statically initialize globals in the order in which they depend on each other. Now, a global is always initialized before use, except if there is a mutual dependency, or a hiden dependency (through a method call). Index: GlobalVarDeclaration.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/GlobalVarDeclaration.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** GlobalVarDeclaration.java 25 Jul 2003 16:13:10 -0000 1.19 --- GlobalVarDeclaration.java 31 Jul 2003 21:59:39 -0000 1.20 *************** *** 133,145 **** ****************************************************************/ ! public void compile() { gnu.expr.Declaration declaration = left.getDeclaration(); if (constant) declaration.setFlag(Declaration.IS_CONSTANT); ! if (value == null) ! declaration.noteValue(null); ! else ! declaration.noteValue(value.compile()); } --- 133,151 ---- ****************************************************************/ ! public void precompile() { + // Compute the value first, and this might use another global value, + // which will then be properly initialized before use. + gnu.expr.Expression value = + this.value != null ? this.value.compile() : null; + gnu.expr.Declaration declaration = left.getDeclaration(); if (constant) declaration.setFlag(Declaration.IS_CONSTANT); ! declaration.noteValue(value); ! } ! ! public void compile() ! { } Index: AST.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/AST.java,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** AST.java 22 Jul 2003 16:55:31 -0000 1.48 --- AST.java 31 Jul 2003 21:59:39 -0000 1.49 *************** *** 42,45 **** --- 42,46 ---- ArrayList classes = new ArrayList(children.size()); ArrayList methods = new ArrayList(children.size()); + ArrayList globals = new ArrayList(10); for(Iterator i = children.iterator(); i.hasNext();) *************** *** 52,55 **** --- 53,58 ---- else if (node instanceof EnumDefinition) classes.add(((EnumDefinition)node).classDef); + else if (node instanceof GlobalVarDeclaration) + globals.add(node); } *************** *** 59,62 **** --- 62,68 ---- this.methods = (MethodDeclaration[]) methods.toArray(new MethodDeclaration[methods.size()]); + + this.globals = (GlobalVarDeclaration[]) + globals.toArray(new GlobalVarDeclaration[globals.size()]); } *************** *** 177,180 **** --- 183,191 ---- else { + // Globals are compiled first, so that we can find out their + // dependencies, and initialize them in the right order. + for (int i = 0; i < globals.length; i++) + globals[i].precompile(); + for(Iterator i = children.iterator();i.hasNext();) ((Definition)i.next()).compile(); *************** *** 195,198 **** --- 206,210 ---- private ClassDefinition[] classes; private MethodDeclaration[] methods; + private GlobalVarDeclaration[] globals; } |
From: <bo...@us...> - 2003-07-31 22:33:41
|
Update of /cvsroot/nice/Nice/testsuite/compiler In directory sc8-pr-cvs1:/tmp/cvs-serv21461/testsuite/compiler Modified Files: globalVariables.testsuite Log Message: Statically initialize globals in the order in which they depend on each other. Now, a global is always initialized before use, except if there is a mutual dependency, or a hiden dependency (through a method call). Index: globalVariables.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/globalVariables.testsuite,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** globalVariables.testsuite 11 Jun 2003 19:53:07 -0000 1.9 --- globalVariables.testsuite 31 Jul 2003 21:59:39 -0000 1.10 *************** *** 112,113 **** --- 112,145 ---- /// package b import a ; + + /// PASS + check(); + /// Toplevel + void check() + { + assert QNAME.b != null; + } + + let String A = "A"; + let String B = A + ".B"; + + let QualifiedName QNAME = new QualifiedName(a: A, b: B); + + class QualifiedName { String a; String b; } + + /// PASS + check(); + /// Toplevel + void check() + { + assert QNAME.b != null; + } + + let String B = AA + ".B"; + let String AA = A + ".A"; + let String A = "A"; + + let QualifiedName QNAME = new QualifiedName(a: A, b: B); + + class QualifiedName { String a; String b; } + |