Merge branch 'ptp_9_1'

Change-Id: I0a9fe14a1dbc3dd45e1276eebc1f55c35b738e7b
Signed-off-by: Greg Watson <g.watson@computer.org>
diff --git a/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif b/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
index ac45f38..5981749 100644
--- a/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
+++ b/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
Binary files differ
diff --git a/org.eclipse.photran.cdtinterface/plugin.xml b/org.eclipse.photran.cdtinterface/plugin.xml
index 53b9f5e..99e98a6 100644
--- a/org.eclipse.photran.cdtinterface/plugin.xml
+++ b/org.eclipse.photran.cdtinterface/plugin.xml
@@ -450,7 +450,7 @@
           activeByDefault="true"
           id="org.eclipse.photran.ui.navigator.content"
           contentProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorContentProvider"
-          labelProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorLabelProvider"
+          labelProvider="org.eclipse.photran.internal.cdtinterface.ui.FNavigatorLabelProvider"
           name="Fortran Elements"
           priority="high">
          <triggerPoints>
diff --git a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/errorparsers/GFortranErrorParser.java b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/errorparsers/GFortranErrorParser.java
index a31bfc0..81534f8 100644
--- a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/errorparsers/GFortranErrorParser.java
+++ b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/errorparsers/GFortranErrorParser.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     UIUC - Initial API and implementation
+ *     Greg Watson - GFortran 5.x support
  *******************************************************************************/
 package org.eclipse.photran.internal.cdtinterface.errorparsers;
 
@@ -20,7 +21,7 @@
 import org.eclipse.core.resources.IResource;
 
 /**
- * An error parser for GNU Fortran 4.x
+ * An error parser for GNU Fortran 4.x and 5.x
  *
  * @author Jeff Overbey
  */
@@ -29,6 +30,9 @@
     private static final int MAX_LINES_IN_ERROR_MESSAGE = 10;
 
     /*================================================================================
+    Gfortran 4.x
+    ------------
+    
     cray-pointers.f90:56.21:
 
     subroutine example3()
@@ -43,13 +47,22 @@
         real    :: pointee
                          1
     Error: Array 'pointee' at (1) cannot have a deferred shape
+    
+    GFortran 5.x:
+    -------------
+    
+    delme.f90:4:2:
+
+    i = i + 1
+    1
+    Error: Named constant 'i' in variable definition context (assignment) at (1)
     ================================================================================*/
 
     //                                                                     Filename
     //                                                                     |    Line        Column
     //                                                                     |    |           |
     //                                    Regex group number    1          2    3       4   5
-    private static final Pattern startLine = Pattern.compile("^(In file )?(.+):([0-9]+)(\\.([0-9]+))?:$"); //$NON-NLS-1$
+    private static final Pattern startLine = Pattern.compile("^(In file )?([^:]+):([0-9]+)([\\.:]([0-9]+))?:$"); //$NON-NLS-1$
     private static final Pattern errorLine = Pattern.compile("^(Fatal )?Error: .*"); //$NON-NLS-1$
     private static final Pattern warningLine = Pattern.compile("^Warning: .*"); //$NON-NLS-1$
 
@@ -98,7 +111,7 @@
                 String filename = startLineMatcher.group(2);
                 int lineNumber = Integer.parseInt(startLineMatcher.group(3));
                 currentState = new AccumulateErrorMessageLines(filename, lineNumber, line);
-            }
+           }
             return false;
         }
     }
diff --git a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java
new file mode 100644
index 0000000..badcd22
--- /dev/null
+++ b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2018 TODO COMPANY NAME and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    gw6 (TODO COMPANY NAME) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.photran.internal.cdtinterface.ui;
+
+import org.eclipse.cdt.core.model.IArchiveContainer;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.IBinaryContainer;
+import org.eclipse.cdt.core.model.IBinaryModule;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.internal.ui.cview.CViewMessages;
+import org.eclipse.cdt.internal.ui.navigator.CNavigatorProblemsLabelDecorator;
+import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider;
+import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.ICommonLabelProvider;
+
+/**
+ * 
+ * @author gw6
+ */
+@SuppressWarnings("restriction")
+public class FNavigatorLabelProvider extends FViewLabelProvider implements ICommonLabelProvider
+{
+
+    /**
+     * Create a default label provider.
+     */
+    public FNavigatorLabelProvider()
+    {
+        super(AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS,
+            AppearanceAwareLabelProvider.DEFAULT_IMAGEFLAGS | CElementImageProvider.SMALL_ICONS);
+        addLabelDecorator(new CNavigatorProblemsLabelDecorator());
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.ICommonLabelProvider#init(org.eclipse.ui.navigator.
+     * ICommonContentExtensionSite)
+     */
+    @Override
+    public void init(ICommonContentExtensionSite extensionSite)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
+     */
+    @Override
+    public void restoreState(IMemento memento)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
+     */
+    @Override
+    public void saveState(IMemento memento)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
+     */
+    @Override
+    public String getDescription(Object element)
+    {
+        if (element instanceof IResource)
+        {
+            return ((IResource)element).getFullPath().makeRelative().toString();
+        }
+        else if (element instanceof ICElement)
+        {
+            ICElement celement = (ICElement)element;
+            IResource res = celement.getAdapter(IResource.class);
+            if (res != null)
+            {
+                return res.getFullPath().toString();
+            }
+            else if (celement.getElementType() == ICElement.C_VCONTAINER)
+            {
+                if (celement instanceof IBinaryContainer)
+                {
+                    ICProject cproj = celement.getCProject();
+                    if (cproj != null) { return cproj.getPath() + CViewMessages.CView_binaries; }
+                }
+                else if (celement instanceof IArchiveContainer)
+                {
+                    ICProject cproj = celement.getCProject();
+                    if (cproj != null) { return cproj.getPath() + CViewMessages.CView_archives; }
+                }
+                else if (celement instanceof IBinaryModule)
+                {
+                    IBinary bin = ((IBinaryModule)celement).getBinary();
+                    return bin.getPath() + ":" + celement.getElementName(); //$NON-NLS-1$
+                }
+            }
+            else if (celement
+                .getElementType() > ICElement.C_UNIT) { return celement.getPath().toString()
+                    + " - [" + celement.getElementName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+            }
+            return celement.getElementName();
+        }
+        else if (element instanceof IWorkbenchAdapter)
+        {
+            IWorkbenchAdapter wAdapter = (IWorkbenchAdapter)element;
+            return wAdapter.getLabel(element);
+        }
+        return null;
+    }
+
+}
diff --git a/org.eclipse.photran.ui/.classpath b/org.eclipse.photran.ui/.classpath
index deb6736..b277a8a 100644
--- a/org.eclipse.photran.ui/.classpath
+++ b/org.eclipse.photran.ui/.classpath
@@ -2,6 +2,6 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.photran.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.photran.ui/.settings/org.eclipse.jdt.core.prefs
index bc13f2e..1d33f3f 100644
--- a/org.eclipse.photran.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.photran.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,9 +1,8 @@
-#Tue Nov 01 15:52:43 CDT 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.7
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -74,7 +73,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=20