PackageFooterEmitter: fix null exception from getReturnTypeNode() on getter function node

Uses same approach for getters as regular functions to first check that the return type string isn't empty or void

Also, passes to formatQualifiedName() for consistency
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index 64edb13..6d1f5ca 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -426,7 +426,11 @@
 					data.customNS = altNS;
                 	if (!accessorData.contains(data)) accessorData.add(data);
             	    if (dnode.getNodeID() == ASTNodeID.GetterID) {
-						data.type = fnNode.getReturnTypeNode().resolveType(getProject()).getQualifiedName();
+						String qualifiedTypeName =	fnNode.getReturnType();
+						if (!(qualifiedTypeName.equals("") || qualifiedTypeName.equals("void"))) {
+								qualifiedTypeName = fnNode.getReturnTypeNode().resolveType(getProject()).getQualifiedName();
+						}
+						data.type = fjs.formatQualifiedName(qualifiedTypeName, true);
 						if (data.access == null) {
 							data.access = "readonly";
 						} else data.access = "readwrite";
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/as/TestAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/as/TestAccessorMembers.java
index 81749fc..a243f45 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/as/TestAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/as/TestAccessorMembers.java
@@ -68,6 +68,22 @@
     }
 
     @Test
+    public void testGetAccessor_withoutReturnType()
+    {
+        IAccessorNode node = getAccessor("function get foo(){return -1;}");
+        asBlockWalker.visitFunction(node);
+        assertOut("function get foo() {\n\treturn -1;\n}");
+    }
+
+    @Test
+    public void testGetAccessor_withNamespace_withoutReturnType()
+    {
+        IAccessorNode node = getAccessor("public function get foo(){return -1;}");
+        asBlockWalker.visitFunction(node);
+        assertOut("public function get foo() {\n\treturn -1;\n}");
+    }
+
+    @Test
     public void testSetAccessor()
     {
         IAccessorNode node = getAccessor("function set foo(value:int):void{}");
@@ -98,4 +114,12 @@
         asBlockWalker.visitFunction(node);
         assertOut("public static function set foo(value:int):void {\n}");
     }
+
+    @Test
+    public void testSetAccessor_withoutParameterType()
+    {
+        IAccessorNode node = getAccessor("function set foo(value):void{}");
+        asBlockWalker.visitFunction(node);
+        assertOut("function set foo(value:*):void {\n}");
+    }
 }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogAccessorMembers.java
index 69ae550..00b1fb1 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogAccessorMembers.java
@@ -87,6 +87,26 @@
 
     @Override
     @Test
+    public void testGetAccessor_withoutReturnType()
+    {
+        IGetterNode node = (IGetterNode) getAccessor("function get foo(){}");
+        asBlockWalker.visitGetter(node);
+        assertOut("Object.defineProperty(\n\tRoyaleTest_A.prototype, \n\t'foo', "
+                + "\n\t{get:function() {\n\t}, configurable:true}\n)");
+    }
+
+    @Override
+    @Test
+    public void testGetAccessor_withNamespace_withoutReturnType()
+    {
+        IGetterNode node = (IGetterNode) getAccessor("public function get foo(){}");
+        asBlockWalker.visitGetter(node);
+        assertOut("Object.defineProperty(\n\tRoyaleTest_A.prototype, \n\t'foo', "
+                + "\n\t{get:function() {\n\t}, configurable:true}\n)");
+    }
+
+    @Override
+    @Test
     public void testSetAccessor()
     {
         ISetterNode node = (ISetterNode) getAccessor("function set foo(value:int):void{}");
@@ -134,6 +154,16 @@
     }
 
     @Override
+    @Test
+    public void testSetAccessor_withoutParameterType()
+    {
+        ISetterNode node = (ISetterNode) getAccessor("function set foo(value):void{}");
+        asBlockWalker.visitSetter(node);
+        assertOut("Object.defineProperty(\n\tRoyaleTest_A.prototype, \n\t'foo', \n\t{set:function(value)"
+                + " {\n\t}, configurable:true}\n)");
+    }
+
+    @Override
     protected IBackend createBackend()
     {
         return new GoogBackend();
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
index 6aaac73..1910d01 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
@@ -104,6 +104,32 @@
           "RoyaleTest_A.get__foo = function() {\n  return -1;\n};\n\n\n" +
           "Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n * @type {number}\n */\nfoo: {\nget: RoyaleTest_A.get__foo}}\n);");
     }
+    
+    @Override
+    @Test
+    public void testGetAccessor_withoutReturnType()
+    {
+        IClassNode node = (IClassNode) getNode("function get foo(){}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
+        "/**\n * @nocollapse\n * @type {*}\n */\nRoyaleTest_A.prototype.foo;\n\n\n" + 
+				"RoyaleTest_A.prototype.get__foo = function() {\n};\n\n\n" +
+        		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {*}\n */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);");
+    }
+    
+    @Override
+    @Test
+    public void testGetAccessor_withNamespace_withoutReturnType()
+    {
+    	IClassNode node = (IClassNode) getNode("public function get foo(){return -1;}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
+        "/**\n * @nocollapse\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo;\n\n\n" + 
+				"RoyaleTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
+        		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {*}\n */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);");
+    }
 
     @Override
     @Test
@@ -201,6 +227,19 @@
         "B.prototype.set__foo = function(value) {\n  var /** @type {number} */ z = (function($value){B.superClass_.set__foo.apply(this, [$value]);return $value;}).apply(this, [value]);\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n * @type {number}\n */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
     }
+
+    @Override
+    @Test
+    public void testSetAccessor_withoutParameterType()
+    {
+    	IClassNode node = (IClassNode) getNode("function set foo(value):void{}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
+        "/**\n * @nocollapse\n * @type {*}\n */\nRoyaleTest_A.prototype.foo;\n\n\n" + 
+				"RoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
+        		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {*}\n */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);");
+    }
     
     @Override
     protected IBackend createBackend()