diff --git a/SyntaxVisitors/UniversalVisitors/ABCStatisticsVisitors.cs b/SyntaxVisitors/UniversalVisitors/ABCStatisticsVisitors.cs
index 5e106efba..8e33af274 100644
--- a/SyntaxVisitors/UniversalVisitors/ABCStatisticsVisitors.cs
+++ b/SyntaxVisitors/UniversalVisitors/ABCStatisticsVisitors.cs
@@ -167,11 +167,11 @@ namespace SyntaxVisitors
ReadFuncCount++;
}*/
- if (mc.dereferencing_value is ident id1 && (id1.name.ToLower() == "write" || id1.name.ToLower() == "writeln") &&
+ /*if (mc.dereferencing_value is ident id1 && (id1.name.ToLower() == "write" || id1.name.ToLower() == "writeln") &&
mc.parameters != null && mc.parameters.expressions.Any(ex => ex is char_const cc && cc.cconst == ' '))
{
WriteProcWithSpace += 1;
- }
+ }*/
base.visit(mc);
}
public override void visit(procedure_call pc)
diff --git a/VisualPascalABCNET/Form1.Designer.cs b/VisualPascalABCNET/Form1.Designer.cs
index f301e396c..2f020c9ef 100644
--- a/VisualPascalABCNET/Form1.Designer.cs
+++ b/VisualPascalABCNET/Form1.Designer.cs
@@ -195,6 +195,7 @@ namespace VisualPascalABC
this.slLine = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
this.slCol = new System.Windows.Forms.ToolStripStatusLabel();
+ this.HealthLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.printDialog1 = new System.Windows.Forms.PrintDialog();
@@ -1747,7 +1748,8 @@ namespace VisualPascalABC
this.toolStripStatusLabel1,
this.slLine,
this.toolStripStatusLabel2,
- this.slCol});
+ this.slCol,
+ this.HealthLabel});
this.statusStrip1.Location = new System.Drawing.Point(0, 801);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 21, 0);
@@ -1758,7 +1760,7 @@ namespace VisualPascalABC
// toolStripStatusLabel5
//
this.toolStripStatusLabel5.Name = "toolStripStatusLabel5";
- this.toolStripStatusLabel5.Size = new System.Drawing.Size(964, 19);
+ this.toolStripStatusLabel5.Size = new System.Drawing.Size(912, 19);
this.toolStripStatusLabel5.Spring = true;
this.toolStripStatusLabel5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
@@ -1786,10 +1788,21 @@ namespace VisualPascalABC
this.slCol.AutoSize = false;
this.slCol.AutoToolTip = true;
this.slCol.Name = "slCol";
- this.slCol.Size = new System.Drawing.Size(40, 19);
+ this.slCol.Size = new System.Drawing.Size(46, 19);
this.slCol.Text = " numb";
this.slCol.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
+ // HealthLabel
+ //
+ this.HealthLabel.BackColor = System.Drawing.SystemColors.Control;
+ this.HealthLabel.IsLink = true;
+ this.HealthLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline;
+ this.HealthLabel.LinkColor = System.Drawing.Color.Black;
+ this.HealthLabel.Name = "HealthLabel";
+ this.HealthLabel.Size = new System.Drawing.Size(19, 19);
+ this.HealthLabel.Text = " ";
+ this.HealthLabel.Click += new System.EventHandler(this.HealthLabel_Click);
+ //
// openFileDialog1
//
this.openFileDialog1.Multiselect = true;
@@ -2628,6 +2641,7 @@ namespace VisualPascalABC
private System.Windows.Forms.ToolStripMenuItem mAUTOINSERTToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mUNITTESTSToolStripMenuItem;
private System.Windows.Forms.ToolStripButton toolStripButton1;
+ private System.Windows.Forms.ToolStripStatusLabel HealthLabel;
}
}
diff --git a/VisualPascalABCNET/Form1.cs b/VisualPascalABCNET/Form1.cs
index 1d54ada13..510e8cbe8 100644
--- a/VisualPascalABCNET/Form1.cs
+++ b/VisualPascalABCNET/Form1.cs
@@ -1817,7 +1817,7 @@ namespace VisualPascalABC
}
if (stat.WriteProcWithSpace > 0)
{
- NegativePercent += Math.Min(2 + (stat.StaticArrays - 1) * 1, 5);
+ NegativePercent += Math.Min(2 + (stat.WriteProcWithSpace - 1) * 1, 5);
}
if (stat.OldStrings > 0)
{
@@ -1947,6 +1947,11 @@ namespace VisualPascalABC
}
}
+ private void HealthLabel_Click(object sender, EventArgs e)
+ {
+ System.Diagnostics.Process.Start("https://pascalabcnet.github.io/program_health.html");
+ }
+
private void tsHelp_Click(object sender, EventArgs e)
{
__showhelpinqueue();
diff --git a/VisualPascalABCNET/Form1.resx b/VisualPascalABCNET/Form1.resx
index 513fddec6..f42f1046b 100644
--- a/VisualPascalABCNET/Form1.resx
+++ b/VisualPascalABCNET/Form1.resx
@@ -307,6 +307,21 @@
d07lxcgmYqk6sX1iENPfdv0Cx/Wod5mP/rvMkCs5SPPOp5qJQ6WOnVOD2IzXiA6B6TRp9PMK470dqLqN
JO8cT/Oxkwa2jmvEz4Mq4ROIn/YrqSJ2nMZWTEFkR8FqVMZSJImFUAKzq534BOJyW/ju7nIk6Q+B49+g
+BQZbgAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
@@ -339,21 +354,6 @@
saeS2rb7UOgXaTuVTHazh+J2K72OKDpTHEBh1SiuGV8sLLYtFmb8JHwex090zigDU8LZCb1Pl+WA/KsG
Jj3zsvDoBzC8JxbusgseC5B9pmAzIK+sn7b772judaPudtCktaO5bRO+rJXG1hc0aJ5T12iipnaIGtUw
5y4qNgNEqeo7yM0rl+jiFeNZnIk7fyOCEhJ+AymIZtFIMC8OAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
- YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
- 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
- bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
- VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
- c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
- Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
- mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
- kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
- TgDQASA1MVpwzwAAAABJRU5ErkJggg==
@@ -681,7 +681,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABK
- FQAAAk1TRnQBSQFMAgEBEAEAAaQBAQGkAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ FQAAAk1TRnQBSQFMAgEBEAEAAbQBAQG0AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAAVADAAEBAQABCAYAARQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
diff --git a/VisualPascalABCNET/VisualPascalABCNET_40.csproj b/VisualPascalABCNET/VisualPascalABCNET_40.csproj
index d67309d37..f036ad7a6 100644
--- a/VisualPascalABCNET/VisualPascalABCNET_40.csproj
+++ b/VisualPascalABCNET/VisualPascalABCNET_40.csproj
@@ -118,6 +118,12 @@
+
+ Form
+
+
+ ABCHealth.cs
+
Form
@@ -416,6 +422,9 @@
Form
+
+ ABCHealth.cs
+
Designer
AboutBox.cs
diff --git a/bin/Lib/NUnitABC.pas b/bin/Lib/NUnitABC.pas
index f34b3d497..930fcf3d8 100644
--- a/bin/Lib/NUnitABC.pas
+++ b/bin/Lib/NUnitABC.pas
@@ -9,10 +9,60 @@ begin
end;
type
+ CombinatorialAttribute = NUnit.Framework.CombinatorialAttribute;
+ PairwiseAttribute = NUnit.Framework.PairwiseAttribute;
+ IgnoreAttribute = NUnit.Framework.IgnoreAttribute;
+ OrderAttribute = NUnit.Framework.OrderAttribute;
SetUpAttribute = NUnit.Framework.SetUpAttribute;
+ TearDownAttribute = NUnit.Framework.TearDownAttribute;
TestAttribute = NUnit.Framework.TestAttribute;
TestCaseAttribute = NUnit.Framework.TestCaseAttribute;
+ TimeoutAttribute = NUnit.Framework.TimeoutAttribute;
+ RandomAttribute = NUnit.Framework.RandomAttribute;
+ RangeAttribute = NUnit.Framework.RangeAttribute;
+ RepeatAttribute = NUnit.Framework.RepeatAttribute;
+ TestFixtureAttribute = NUnit.Framework.TestFixtureAttribute;
+ ValuesAttribute = NUnit.Framework.ValuesAttribute;
+
Assert = NUnit.Framework.Assert;
+ Assume = NUnit.Framework.Assume;
+ Does = NUnit.Framework.Does;
+ Has = NUnit.Framework.Has;
+ &Is = NUnit.Framework.Is;
+ StringAssert = NUnit.Framework.StringAssert;
+ Warn = NUnit.Framework.Warn;
+
+ AllOperator = NUnit.Framework.Constraints.AllOperator;
+ AndOperator = NUnit.Framework.Constraints.AndOperator;
+ BinaryOperator = NUnit.Framework.Constraints.BinaryOperator;
+ CollectionOperator = NUnit.Framework.Constraints.CollectionOperator;
+ Interval = NUnit.Framework.Constraints.Interval;
+ OrOperator = NUnit.Framework.Constraints.OrOperator;
+ WithOperator = NUnit.Framework.Constraints.WithOperator;
+
+ Tolerance = NUnit.Framework.Constraints.Tolerance;
+
+ Constraint = NUnit.Framework.Constraints.Constraint;
+
+ AndConstraint = NUnit.Framework.Constraints.AndConstraint;
+ AnyOfConstraint = NUnit.Framework.Constraints.AnyOfConstraint;
+ BinaryConstraint = NUnit.Framework.Constraints.BinaryConstraint;
+ CollectionConstraint = NUnit.Framework.Constraints.CollectionConstraint;
+ EndsWithConstraint = NUnit.Framework.Constraints.EndsWithConstraint;
+ EqualConstraint = NUnit.Framework.Constraints.EqualConstraint;
+ FalseConstraint = NUnit.Framework.Constraints.FalseConstraint;
+ GreaterThanConstraint = NUnit.Framework.Constraints.GreaterThanConstraint;
+ GreaterThanOrEqualConstraint = NUnit.Framework.Constraints.GreaterThanOrEqualConstraint;
+ LessThanConstraint = NUnit.Framework.Constraints.LessThanConstraint;
+ LessThanOrEqualConstraint = NUnit.Framework.Constraints.LessThanOrEqualConstraint;
+ NotConstraint = NUnit.Framework.Constraints.NotConstraint;
+ OrConstraint = NUnit.Framework.Constraints.OrConstraint;
+ RangeConstraint = NUnit.Framework.Constraints.RangeConstraint;
+ StartsWithConstraint = NUnit.Framework.Constraints.StartsWithConstraint;
+ StringConstraint = NUnit.Framework.Constraints.StringConstraint;
+ SubStringConstraint = NUnit.Framework.Constraints.SubStringConstraint;
+ TrueConstraint = NUnit.Framework.Constraints.TrueConstraint;
+
begin