Bug 569756 - Revisit field initialization in roles - discriminate final
/ non-final

revert changes in smap tests due to bug 527743 and bug 528057
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumFlightbonusTest.java b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumFlightbonusTest.java
index 5e856d1..c5a37ee 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumFlightbonusTest.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumFlightbonusTest.java
@@ -253,20 +253,23 @@
     	// copy-inherited methods
         FileInfo fileInfo2 = stratum_role1.getOrCreateFileInfo("Bonus.java", "org/eclipse/objectteams/example/bonussystem/Bonus.java");
 
-        LineInfo lineInfo4 = new LineInfo(39,21); // class header (e.g., _OT$getTeam())
-        LineInfo lineInfo6 = new LineInfo(44,30); // method getCollectedCredits
-        LineInfo lineInfo7 = new LineInfo(49,28); // method collectCredits
+        LineInfo lineInfo4 = new LineInfo(39,17); // class header (e.g., _OT$getTeam())
+        LineInfo lineInfo5 = new LineInfo(39,18); // method _OT$InitFields (class header and field decl)
+        lineInfo5.setRepeatCount(3);
+        LineInfo lineInfo6 = new LineInfo(44,29); // method getCollectedCredits
+        LineInfo lineInfo7 = new LineInfo(49,27); // method collectCredits
         lineInfo7.setRepeatCount(2);
-        LineInfo lineInfo8 = new LineInfo(58,22); // method buy
+        LineInfo lineInfo8 = new LineInfo(58,21); // method buy
         lineInfo8.setRepeatCount(6);
 
         fileInfo2.addLineInfo(lineInfo4);
+        fileInfo2.addLineInfo(lineInfo5);
         fileInfo2.addLineInfo(lineInfo6);
         fileInfo2.addLineInfo(lineInfo7);
         fileInfo2.addLineInfo(lineInfo8);
 
         LineInfo lineInfo1 = new LineInfo(7,7); 	// all lines of class Subscriber
-        lineInfo1.setRepeatCount(14);
+        lineInfo1.setRepeatCount(10);
 
         LineInfo lineInfo2 = new LineInfo(ISMAPConstants.STEP_INTO_LINENUMBER,ISMAPConstants.STEP_INTO_LINENUMBER);
         LineInfo lineInfo3 = new LineInfo(ISMAPConstants.STEP_OVER_LINENUMBER,ISMAPConstants.STEP_OVER_LINENUMBER);
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest002.java b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest002.java
index 8d319e8..db465e5 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest002.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest002.java
@@ -83,7 +83,7 @@
 
     	expectedStrata.put(TYPENAME, createExpectedRoleAStratum(true /*fullSource*/));
 
-        HashMap<String, int[]> expectedMethodLineNumbers = createExpectedLines(11);
+        HashMap<String, int[]> expectedMethodLineNumbers = createExpectedLines(13);
 
         try
         {
@@ -94,7 +94,6 @@
             				outputPath); // need this so that class files are actually written for next phase
 
 	        expectedStrata.put(TYPENAME, createExpectedRoleAStratum(false /*not fullSource*/));
-	        expectedMethodLineNumbers = createExpectedLines(13);
 
             // recompile SubTeam only to check usage of byte code information (CopyInheritanceSrc):
             String [] classPaths = getDefaultClassPaths();
@@ -113,7 +112,7 @@
     }
 
 	private HashMap<String, int[]> createExpectedLines(int l) {
-		// consecutive synth lines, different start in source/binary settings
+		// consecutive synth lines
 		HashMap<String, int[]> expectedMethodLineNumbers = new HashMap<String, int[]>();
         expectedMethodLineNumbers.put("copyInheritance.SubTeam$__OT__RoleA.roleMethod0(LcopyInheritance/SubTeam$TSuper__OT__SuperTeam;)V", new int[]{l++,l++,l++});
         expectedMethodLineNumbers.put("copyInheritance.SubTeam$__OT__RoleA.roleMethod0(LcopyInheritance/SuperTeam$TSuper__OT__SuperSuperTeam;)V", new int[]{l++,l++});
@@ -126,11 +125,39 @@
     // helper for testSimpleCopyInheritanceSmapRoleA.
     //
 	List<SmapStratum> createExpectedRoleAStratum(boolean fullSource) {
+		// these two lines are swapped when reading super teams as binary:
+		int twelve = fullSource ? 12 : 11;
+		int eleven = fullSource ? 11 : 12;
 
 		SmapStratum stratum_role = new SmapStratum(ISMAPConstants.OTJ_STRATUM_NAME);
 		FileInfo fileInfo2 = stratum_role.getOrCreateFileInfo("SubTeam.java", "copyInheritance/SubTeam.java");
+        // letters (a) ... indicate the order in which lines are assigned
+        // class position is used by ctor, initFields and getTeam
+        
+        FileInfo fileInfo0 = stratum_role.getOrCreateFileInfo("SuperSuperTeam.java", "copyInheritance/SuperSuperTeam.java");
 
-        LineInfo lineInfo1_role2 = new LineInfo(5,5); // all original lines from SubTeam.RoleA
+        LineInfo lineInfo1_role0 = new LineInfo(4,twelve); // (c) class position (4) mapped to synthetic line 12
+        LineInfo lineInfo2_role0 = new LineInfo(8,16); // (e) method roleMethod0 (8..) mapped to synthetic lines 16-17  
+        lineInfo2_role0.setRepeatCount(2);
+        LineInfo lineInfo3_role0 = new LineInfo(12,18); // (f) method roleMethod1 (12,14,15) mapped to synthetic lines 18,20,21
+        lineInfo3_role0.setRepeatCount(4); // repeat 4 although line numbers have a "hole" at comment line 19
+        
+        fileInfo0.addLineInfo(lineInfo1_role0);
+        fileInfo0.addLineInfo(lineInfo2_role0);
+        fileInfo0.addLineInfo(lineInfo3_role0);
+ 
+        FileInfo fileInfo1 = stratum_role.getOrCreateFileInfo("SuperTeam.java", "copyInheritance/SuperTeam.java");
+		LineInfo lineInfo1_role1 = new LineInfo(4,eleven); // (b) class position (4) mapped to synthetic line 11
+        LineInfo lineInfo2_role1 = new LineInfo(11,13);    // (d) roleMethod0 (11..) mapped to synthetic lines 13-15
+        lineInfo2_role1.setRepeatCount(3);
+        LineInfo lineInfo3_role1 = new LineInfo(8,22); 	   // (g) method roleMethod2 (8..) mapped to synthetic lines 22-23 
+        lineInfo3_role1.setRepeatCount(2);
+        
+        fileInfo1.addLineInfo(lineInfo1_role1);
+        fileInfo1.addLineInfo(lineInfo2_role1);
+        fileInfo1.addLineInfo(lineInfo3_role1);
+
+        LineInfo lineInfo1_role2 = new LineInfo(5,5); // (a) all original lines from SubTeam.RoleA
         lineInfo1_role2.setRepeatCount(6);
         LineInfo lineInfo2_role2 = new LineInfo(ISMAPConstants.STEP_INTO_LINENUMBER,ISMAPConstants.STEP_INTO_LINENUMBER);
         LineInfo lineInfo3_role2 = new LineInfo(ISMAPConstants.STEP_OVER_LINENUMBER,ISMAPConstants.STEP_OVER_LINENUMBER);
@@ -139,37 +166,6 @@
         fileInfo2.addLineInfo(lineInfo2_role2);
         fileInfo2.addLineInfo(lineInfo3_role2);
 
-		FileInfo fileInfo0 = stratum_role.getOrCreateFileInfo("SuperSuperTeam.java", "copyInheritance/SuperSuperTeam.java");
-		FileInfo fileInfo1 = stratum_role.getOrCreateFileInfo("SuperTeam.java", "copyInheritance/SuperTeam.java");
-
-		int[][] lines = { // {line, repeat}
-				// methods declared in SuperSuperTeam.java (fileInfo0):
-				{4, 1},  // class position     (4) (used by ctor and getTeam)
-				{8, 2},	 // method roleMethod0 (8..)
-				{12,4},  // method roleMethod1 (12,14,15) (repeat 4 despite the hole)
-				// methods declared in SuperTeam.java (fileInfo1):
-				{4, 1},  // class position     (4) (used by ctor and getTeam)
-				{8, 2},  // method roleMethod2 (8..)
-				{11,3}   // method roleMethod0 (11..)
-		};
-		// depending on the compilation mode, synthetic lines are assigned in different orders:
-		int[] order = fullSource ? new int[] {
-			5, 1, 2, 4, 0, 3
-		} : new int[] {
-			0, 3, 5, 1, 2, 4
-		};
-
-        int line = 11;
-        for (int idx : order) {
-        	LineInfo info = new LineInfo(lines[idx][0], line);
-        	info.setRepeatCount(lines[idx][1]);
-        	line += lines[idx][1];
-        	if (idx < 3)
-        		fileInfo0.addLineInfo(info);
-        	else
-        		fileInfo1.addLineInfo(info);
-        }
-
         stratum_role.optimize();
         List <SmapStratum>strata_role1 = new ArrayList<SmapStratum>();
         strata_role1.add(stratum_role);
@@ -219,11 +215,11 @@
     	SmapStratum stratum_role = new SmapStratum(ISMAPConstants.OTJ_STRATUM_NAME);
 
         FileInfo fileInfo0 = stratum_role.getOrCreateFileInfo("SuperTeam2.java", "copyInheritance/SuperTeam2.java");
-        LineInfo lineInfo2_role0 = new LineInfo(8,4); // method (8) mapped to synthetic line 4..
+        LineInfo lineInfo1_role0 = new LineInfo(6,4); // class position (6) mapped to synthetic line 4
+        fileInfo0.addLineInfo(lineInfo1_role0);
+        LineInfo lineInfo2_role0 = new LineInfo(8,5); // method (8) mapped to synthetic line 5..
         lineInfo2_role0.setRepeatCount(5);
         fileInfo0.addLineInfo(lineInfo2_role0);
-        LineInfo lineInfo1_role0 = new LineInfo(6,9); // class position (6) mapped to synthetic line 9
-        fileInfo0.addLineInfo(lineInfo1_role0);
 
         LineInfo lineInfo2_role1 = new LineInfo(65533,65533);
         lineInfo2_role1.setRepeatCount(2);
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest003.java b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest003.java
index 9d966c8..be8f4b3 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest003.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest003.java
@@ -98,9 +98,9 @@
         FileInfo fileInfo1 = stratum_role.getOrCreateFileInfo(

         		roleFileSourceName, _packagePath + "/" + "SuperTeam" + "/" + roleFileSourceName);

 

-        LineInfo lineInfo2 = new LineInfo(9,1); // method roleMethod (9..) mapped to synthetic line 1.. (no own lines in SubTeam.RoleA).

+        LineInfo lineInfo1 = new LineInfo(5,1);  // role (5..) mapped to synthetic line 1  (no own lines in SubTeam.RoleA).

+        LineInfo lineInfo2 = new LineInfo(9,2); // method roleMethod (9..) mapped to synthetic line 2..  

         lineInfo2.setRepeatCount(2);

-        LineInfo lineInfo1 = new LineInfo(5,3); // role (5..) mapped to synthetic line 3

         LineInfo lineInfo3 = new LineInfo(ISMAPConstants.STEP_INTO_LINENUMBER,ISMAPConstants.STEP_INTO_LINENUMBER);

         LineInfo lineInfo4 = new LineInfo(ISMAPConstants.STEP_OVER_LINENUMBER,ISMAPConstants.STEP_OVER_LINENUMBER);

 

diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest006.java b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest006.java
index 0fcabe4..65a36b9 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest006.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/compiler/org/eclipse/objectteams/otdt/tests/compiler/smap/OTJStratumGenerationTest006.java
@@ -149,12 +149,12 @@
     	FileInfo fileInfo2 = stratum_role1.getOrCreateFileInfo("SubTeam.java", "calloutOverride/SubTeam.java");

 
     	FileInfo fileInfo1 = stratum_role1.getOrCreateFileInfo("SuperTeam.java", "calloutOverride/SuperTeam.java");

-    	LineInfo lineInfo1 = new LineInfo(13,8); // roleMethod at synth line 8

-    	lineInfo1.setRepeatCount(2);

-        LineInfo lineInfo2 = new LineInfo(8,10); // anotherRoleMethod at synth line 10

-        lineInfo2.setRepeatCount(2);

-        LineInfo lineInfo3 = new LineInfo(4,12); // role ctor at synth line 12

-

+        LineInfo lineInfo1 = new LineInfo(4,8); // role ctor at synth line 8
+        LineInfo lineInfo2 = new LineInfo(8,11); // anotherRoleMethod at synth line 11
+        lineInfo2.setRepeatCount(2);
+        LineInfo lineInfo3 = new LineInfo(13,9); // roleMethod at synth line 9
+        lineInfo3.setRepeatCount(2);
+
         fileInfo1.addLineInfo(lineInfo1);

         fileInfo1.addLineInfo(lineInfo2);

         fileInfo1.addLineInfo(lineInfo3);

diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/workspace/JSR-045/src/org/eclipse/objectteams/example/fbapplication/FlightBonus/Subscriber.java b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/JSR-045/src/org/eclipse/objectteams/example/fbapplication/FlightBonus/Subscriber.java
index 3f5921b..d05cd63 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/workspace/JSR-045/src/org/eclipse/objectteams/example/fbapplication/FlightBonus/Subscriber.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/JSR-045/src/org/eclipse/objectteams/example/fbapplication/FlightBonus/Subscriber.java
@@ -13,8 +13,4 @@
 
 	// Callout method binding
 	String getName() -> String getName();
-
-	public Subscriber(Passenger pass) {
-		tsuper();
-	}
 }