MXMLRoyaleEmitter: fix null exceptions when emitter encounters variables or functions without a type declaration
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
index 4034a5f..ce5b260 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -53,7 +53,6 @@
 import org.apache.royale.compiler.constants.IASLanguageConstants;
 import org.apache.royale.compiler.definitions.IClassDefinition;
 import org.apache.royale.compiler.definitions.IDefinition;
-import org.apache.royale.compiler.definitions.IFunctionDefinition;
 import org.apache.royale.compiler.definitions.INamespaceDefinition;
 import org.apache.royale.compiler.definitions.ITypeDefinition;
 import org.apache.royale.compiler.internal.as.codegen.InstructionListNode;
@@ -1251,8 +1250,13 @@
             	varData.add(data);
             	data.name = varNode.getName();
                 data.isStatic = varNode.hasModifier(ASModifier.STATIC);
-                String qualifiedTypeName =	varNode.getVariableTypeNode().resolveType(getMXMLWalker().getProject()).getQualifiedName();
-        	    data.type = (qualifiedTypeName);
+                String qualifiedTypeName = "*";
+                IExpressionNode variableTypeNode = varNode.getVariableTypeNode();
+                if (variableTypeNode != null)
+                {
+                    qualifiedTypeName = variableTypeNode.resolveType(getMXMLWalker().getProject()).getQualifiedName();
+                }
+        	    data.type = qualifiedTypeName;
         	    IMetaTagsNode metaData = varNode.getMetaTags();
         	    if (metaData != null)
         	    {
@@ -1337,7 +1341,11 @@
             	data.name = methodNode.getName();
                 String qualifiedTypeName =	methodNode.getReturnType();
                 if (!(qualifiedTypeName.equals("") || qualifiedTypeName.equals("void"))) {
-                    qualifiedTypeName = methodNode.getReturnTypeNode().resolveType(fjs).getQualifiedName();;
+                    IExpressionNode returnTypeNode = methodNode.getReturnTypeNode();
+                    if (returnTypeNode != null)
+                    {
+                        qualifiedTypeName = returnTypeNode.resolveType(fjs).getQualifiedName();;
+                    }
                 }
                 data.type = qualifiedTypeName;
         	    data.declaredBy = cdef.getQualifiedName();
@@ -1432,14 +1440,31 @@
                 data.isStatic = accessorNode.hasModifier(ASModifier.STATIC);
                 if (p.getter != null)
                 {
-                    data.type = p.getter.getReturnTypeNode().resolveType(fjs).getQualifiedName();
-                    if (p.setter !=null) {
+                    String returnType = "*";
+                    IExpressionNode returnTypeNode = p.getter.getReturnTypeNode();
+                    if (returnTypeNode != null)
+                    {
+                        returnType = returnTypeNode.resolveType(fjs).getQualifiedName();
+                    }
+                    data.type = returnType;
+                    if (p.setter != null)
+                    {
                         data.access = "readwrite";
-                    } else data.access = "readonly";
+                    }
+                    else
+                    {
+                        data.access = "readonly";
+                    }
                 }
                 else
                 {
-                    data.type = p.setter.getVariableTypeNode().resolveType(fjs).getQualifiedName();
+                    String returnType = "*";
+                    IExpressionNode variableTypeNode = p.setter.getVariableTypeNode();
+                    if (variableTypeNode != null)
+                    {
+                        returnType = variableTypeNode.resolveType(fjs).getQualifiedName();
+                    }
+                    data.type = returnType;
                     data.access = "writeonly";
                 }
 
@@ -2174,7 +2199,13 @@
                                     bindableVarInfo.metaTags = tags;
                             }
 
-                            bindableVarInfo.type = variableNode.getVariableTypeNode().resolveType(getMXMLWalker().getProject()).getQualifiedName();
+                            String bindableVarType = "*";
+                            IExpressionNode variableTypeNode = variableNode.getVariableTypeNode();
+                            if (variableTypeNode != null)
+                            {
+                                bindableVarType = variableTypeNode.resolveType(getMXMLWalker().getProject()).getQualifiedName();
+                            }
+                            bindableVarInfo.type = bindableVarType;
                             ((JSRoyaleEmitter) asEmitter).getModel().getBindableVars().put(variableNode.getName(), bindableVarInfo);
                         }
                     }
@@ -3658,7 +3689,13 @@
     	                    	write("_"); // use backing variable
     	                    write(ASEmitterTokens.SPACE);
     	                    writeToken(ASEmitterTokens.EQUAL);
-                            fjs.emitAssignmentCoercion(vnode, varnode.getVariableTypeNode().resolve(getMXMLWalker().getProject()));
+                            IDefinition varTypeDef = null;
+                            IExpressionNode variableTypeNode = varnode.getVariableTypeNode();
+                            if (variableTypeNode != null)
+                            {
+                                varTypeDef = variableTypeNode.resolve(getMXMLWalker().getProject());
+                            }
+                            fjs.emitAssignmentCoercion(vnode, varTypeDef);
     	                    write(ASEmitterTokens.SEMICOLON);
 
     			        }