Merge branch 'edtExtensibleCore' of ssh://jspadea@git.eclipse.org/gitroot/edt/org.eclipse.edt.git into edtExtensibleCore
diff --git a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/lookup/AbstractBinder.java b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/lookup/AbstractBinder.java
index bf01d6f..09c7ebd 100644
--- a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/lookup/AbstractBinder.java
+++ b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/lookup/AbstractBinder.java
@@ -783,7 +783,7 @@
     

         

     protected void processSettingsBlock(ClassDataDeclaration classDataDeclaration, Part functionContainerBinding, Scope functionContainerScope, IProblemRequestor problemRequestor) {

-        

+        if (true) return; //TODO currently blows up

         boolean annotationFoundUsingScope = false;

         for (Name name : classDataDeclaration.getNames()) {

              if (classDataDeclaration.hasSettingsBlock()) {

diff --git a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/DefaultTypeValidator.java b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/DefaultTypeValidator.java
index 13d5225..9571e7d 100755
--- a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/DefaultTypeValidator.java
+++ b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/DefaultTypeValidator.java
@@ -34,12 +34,12 @@
 						new String[] {Integer.toString(len), typeBinding.getClassifier().getTypeSignature(), "(1..32)"});
 			}
 			
+			// Don't report too many errors at once
 			if (decimals < 0 || decimals > 32) {
 				problemRequestor.acceptProblem(type, IProblemRequestor.INVALID_DECIMALS,
 						new String[] {Integer.toString(decimals), typeBinding.getClassifier().getTypeSignature(), "(1..32)"});
 			}
-			
-			if (decimals > len) {
+			else if (decimals > len) {
 				problemRequestor.acceptProblem(type, IProblemRequestor.DECIMALS_GREATER_THAN_LENGTH,
 						new String[] {Integer.toString(decimals), typeBinding.getClassifier().getTypeSignature(), Integer.toString(len)});
 			}
diff --git a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/part/FunctionValidator.java b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/part/FunctionValidator.java
index 23a04f5..b48b202 100644
--- a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/part/FunctionValidator.java
+++ b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/part/FunctionValidator.java
@@ -264,10 +264,6 @@
 	
 	private void checkParmTypeNotStaticArray(FunctionParameter functionParameter, Type parmType) {
 
-		if (functionParameter.isNullable()) {
-			checkParmTypeNotStaticArray(functionParameter, parmType.getBaseType());
-		}
-		
 		if(parmType.isArrayType()) {
 			if (((ArrayType) parmType).hasInitialSize()) {
         	problemRequestor.acceptProblem(
diff --git a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/statement/FieldValidator.java b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/statement/FieldValidator.java
index 8816dac..4dce77c 100644
--- a/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/statement/FieldValidator.java
+++ b/core/org.eclipse.edt.compiler/src/org/eclipse/edt/compiler/internal/core/validation/statement/FieldValidator.java
@@ -25,6 +25,7 @@
 import org.eclipse.edt.compiler.internal.util.BindingUtil;
 import org.eclipse.edt.mof.egl.Constructor;
 import org.eclipse.edt.mof.egl.Interface;
+import org.eclipse.edt.mof.egl.ParameterizedType;
 import org.eclipse.edt.mof.egl.Service;
 import org.eclipse.edt.mof.egl.StructPart;
 
@@ -52,9 +53,10 @@
 			}
 		}
 		else {
+			//TODO records have no constructor - look into this once records are being bound (might need to add 'constructor()' to EGLRecord and StructuredRecord)
 			org.eclipse.edt.mof.egl.Type typeBinding = type.resolveType();
 			//Non-nullable reference types must be instantiable, because they are initialized with the default constructor
-			if (typeBinding != null && !classDataDeclaration.isNullable() && !hasPublicDefaultConstructor(typeBinding)) {
+			if (typeBinding != null && !classDataDeclaration.isNullable() && !(typeBinding instanceof ParameterizedType) && !hasPublicDefaultConstructor(typeBinding)) {
 				//Don't need to throw error if the field is in an ExternalType
 				if (declaringPart == null || declaringPart.getKind() != ITypeBinding.EXTERNALTYPE_BINDING) {
 					problemRequestor.acceptProblem(type,
@@ -93,7 +95,7 @@
 			else {
 				org.eclipse.edt.mof.egl.Type typeBinding = type.resolveType();
 				//Non-nullable reference types must be instantiable, because they are initialized with the default constructor
-				if (typeBinding != null && !functionDataDeclaration.isNullable() && !hasPublicDefaultConstructor(typeBinding)) {
+				if (typeBinding != null && !functionDataDeclaration.isNullable() && !(typeBinding instanceof ParameterizedType) && !hasPublicDefaultConstructor(typeBinding)) {
 					problemRequestor.acceptProblem(type,
 							IProblemRequestor.TYPE_NOT_INSTANTIABLE,
 						new String[] {type.getCanonicalName()});
@@ -132,7 +134,7 @@
 			if (!structureItem.hasInitializer()) {
 				org.eclipse.edt.mof.egl.Type typeBinding = type.resolveType();
 				//Non-nullable reference types must be instantiable, because they are initialized with the default constructor
-				if (typeBinding != null && !structureItem.isNullable() && !hasPublicDefaultConstructor(typeBinding)) {
+				if (typeBinding != null && !structureItem.isNullable() && !(typeBinding instanceof ParameterizedType) && !hasPublicDefaultConstructor(typeBinding)) {
 					problemRequestor.acceptProblem(type,
 							IProblemRequestor.TYPE_NOT_INSTANTIABLE,
 						new String[] {type.getCanonicalName()});