You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@royale.apache.org by GitBox <gi...@apache.org> on 2018/07/03 16:24:32 UTC

[GitHub] aharui closed pull request #46: Adding support for Date properties (member variables) from ActionScript

aharui closed pull request #46: Adding support for Date properties (member variables) from ActionScript 
URL: https://github.com/apache/royale-compiler/pull/46
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java b/compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
index 89e33ba2b..518f73636 100644
--- a/compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
@@ -63,6 +63,7 @@
     private List<ExcludedMember> excludesClass = new ArrayList<ExcludedMember>();
     private List<ExcludedMember> excludesField = new ArrayList<ExcludedMember>();
     private List<ExcludedMember> excludes = new ArrayList<ExcludedMember>();
+    private List<ReadOnlyMember> readonly = new ArrayList<ReadOnlyMember>();
 
     public ExternCConfiguration()
     {
@@ -354,6 +355,35 @@ public void setJSRoot(ConfigurationValue cfgval, String filename) throws CannotO
         this.jsRoot = new File(filename);
     }
 
+    @Config(allowMultiple = true)
+    @Mapping("field-readonly")
+    @Arguments({"class", "name"})
+    public void setFieldReadOnly(ConfigurationValue cfgval, List<String> values) throws IncorrectArgumentCount
+    {
+        final int size = values.size();
+        if (size % 2 != 0)
+            throw new IncorrectArgumentCount(size + 1, size, cfgval.getVar(), cfgval.getSource(), cfgval.getLine());
+
+        for (int nameIndex = 0; nameIndex < size - 1; nameIndex += 2)
+        {
+            final String className = values.get(nameIndex);
+            final String name = values.get(nameIndex + 1);
+            readonly.add(new ReadOnlyMember(className, name));
+        }
+    }
+    
+    public ReadOnlyMember isReadOnlyMember(ClassReference classReference,
+    									   MemberReference memberReference)
+	{
+
+    	for (ReadOnlyMember member : readonly)
+    	{
+    		if ( member.isReadOnly(classReference, memberReference) )
+    			return member;
+    	}
+    	return null;
+	}
+
 
     public static class ExcludedMember
     {
@@ -407,5 +437,34 @@ public void print(StringBuilder sb)
             sb.append("//");
         }
     }
+    
+    public static class ReadOnlyMember
+    {
+        private String className;
+        private String name;
+
+        public String getClassName()
+        {
+            return className;
+        }
+
+        public String getName()
+        {
+            return name;
+        }
+
+        public ReadOnlyMember(String className, String name)
+        {
+            this.className = className;
+            this.name = name;
+        }
+
+        public boolean isReadOnly(BaseReference classReference,
+                                  MemberReference memberReference)
+        {
+            return classReference.getQualifiedName().equals(className)
+                    && memberReference.getQualifiedName().equals(name);
+        }
+    }
 
 }
diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/BaseReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/BaseReference.java
index d77285d64..31fc071c6 100644
--- a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/BaseReference.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/BaseReference.java
@@ -23,6 +23,7 @@
 import java.util.Set;
 
 import org.apache.royale.compiler.clients.ExternCConfiguration.ExcludedMember;
+import org.apache.royale.compiler.clients.ExternCConfiguration.ReadOnlyMember;
 
 import com.google.javascript.rhino.JSDocInfo;
 import com.google.javascript.rhino.JSDocInfo.Marker;
@@ -118,6 +119,11 @@ public ExcludedMember isExcluded()
     {
         return null;
     }
+    
+    public ReadOnlyMember isReadOnly()
+    {
+    	return null;
+    }
 
     public abstract void emit(StringBuilder sb);
 
diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/FieldReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/FieldReference.java
index 97fea7b53..49a087518 100644
--- a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/FieldReference.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/FieldReference.java
@@ -20,6 +20,7 @@
 package org.apache.royale.compiler.internal.codegen.typedefs.reference;
 
 import org.apache.royale.compiler.clients.ExternCConfiguration.ExcludedMember;
+import org.apache.royale.compiler.clients.ExternCConfiguration.ReadOnlyMember;
 import org.apache.royale.compiler.internal.codegen.typedefs.utils.FunctionUtils;
 import org.apache.royale.compiler.internal.codegen.typedefs.utils.JSTypeUtils;
 
@@ -105,19 +106,22 @@ public void emit(StringBuilder sb)
             excluded.print(sb);
             return; // XXX (mschmalle) accessors are not treated right, need to exclude get/set
         }
+        
+        ReadOnlyMember readOnly = isReadOnly();
 
         if (!getClassReference().isInterface() && !getComment().isOverride()
-                && !getClassReference().isPropertyInterfaceImplementation(getBaseName()))
+                && !getClassReference().isPropertyInterfaceImplementation(getBaseName())
+                && (null == readOnly))
         {
             emitVar(sb);
         }
         else
         {
-            emitAccessor(sb);
+            emitAccessor(sb, (null != readOnly));
         }
     }
 
-    private void emitAccessor(StringBuilder sb)
+    private void emitAccessor(StringBuilder sb, boolean isReadOnly)
     {
         boolean isInterface = getClassReference().isInterface();
 
@@ -153,17 +157,20 @@ private void emitAccessor(StringBuilder sb)
         sb.append(getBody);
         sb.append(";\n");
 
-        // setter
-        sb.append(indent);
-        sb.append(isPublic);
-        sb.append(staticValue);
-        sb.append("function set ");
-        sb.append(getBaseName());
-        sb.append("(value:");
-        sb.append(type);
-        sb.append("):void");
-        sb.append(setBody);
-        sb.append(";\n");
+        if (!isReadOnly)
+        {
+	        // setter
+	        sb.append(indent);
+	        sb.append(isPublic);
+	        sb.append(staticValue);
+	        sb.append("function set ");
+	        sb.append(getBaseName());
+	        sb.append("(value:");
+	        sb.append(type);
+	        sb.append("):void");
+	        sb.append(setBody);
+	        sb.append(";\n");
+        }
     }
 
     private void emitVar(StringBuilder sb)
diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/MemberReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/MemberReference.java
index 66cf16b83..64be25d0b 100644
--- a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/MemberReference.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/MemberReference.java
@@ -20,6 +20,7 @@
 package org.apache.royale.compiler.internal.codegen.typedefs.reference;
 
 import org.apache.royale.compiler.clients.ExternCConfiguration.ExcludedMember;
+import org.apache.royale.compiler.clients.ExternCConfiguration.ReadOnlyMember;
 
 import com.google.javascript.rhino.JSDocInfo;
 import com.google.javascript.rhino.Node;
@@ -47,5 +48,12 @@ public ExcludedMember isExcluded()
         return getClassReference().getModel().isExcludedMember(
                 getClassReference(), this);
     }
+    
+    @Override
+    public ReadOnlyMember isReadOnly()
+    {
+    	return getClassReference().getModel().isReadOnlyMember(
+    			getClassReference(), this);
+    }
 
 }
diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/ReferenceModel.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/ReferenceModel.java
index 9db95504b..fc598b768 100644
--- a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/ReferenceModel.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/typedefs/reference/ReferenceModel.java
@@ -26,6 +26,7 @@
 
 import org.apache.royale.compiler.clients.ExternCConfiguration;
 import org.apache.royale.compiler.clients.ExternCConfiguration.ExcludedMember;
+import org.apache.royale.compiler.clients.ExternCConfiguration.ReadOnlyMember;
 import org.apache.royale.compiler.clients.problems.ProblemQuery;
 import org.apache.royale.compiler.internal.codegen.typedefs.utils.DebugLogUtils;
 
@@ -346,6 +347,11 @@ public ExcludedMember isExcludedMember(ClassReference classReference, MemberRefe
     {
         return getConfiguration().isExcludedMember(classReference, memberReference);
     }
+    
+    public ReadOnlyMember isReadOnlyMember(ClassReference classReference, MemberReference memberReference)
+    {
+    	return getConfiguration().isReadOnlyMember(classReference, memberReference);
+    }
 
     //--------------------------------------------------------------------------
 
diff --git a/compiler-externc/src/test/config/externc-config.xml b/compiler-externc/src/test/config/externc-config.xml
index d44884164..eeb98048e 100644
--- a/compiler-externc/src/test/config/externc-config.xml
+++ b/compiler-externc/src/test/config/externc-config.xml
@@ -134,4 +134,10 @@
     <exclude><class>SVGLocatable</class><name>farthestViewportElement</name></exclude>
     <exclude><class>SVGLocatable</class><name>nearestViewportElement</name></exclude>
 
+    <!-- read-only properties where we only emit a 'get' accessor method -->
+    <field-readonly>
+        <class>Date</class>
+        <name>timezoneOffset</name>
+    </field-readonly>
+
 </royale-config>
diff --git a/compiler-externc/src/test/resources/typedefs/unit_tests/missing.js b/compiler-externc/src/test/resources/typedefs/unit_tests/missing.js
index e287cee70..689f185db 100644
--- a/compiler-externc/src/test/resources/typedefs/unit_tests/missing.js
+++ b/compiler-externc/src/test/resources/typedefs/unit_tests/missing.js
@@ -219,3 +219,95 @@ uint.MAX_VALUE;
  * @const
  */
 uint.MIN_VALUE;
+
+// additions to the Date prototype to allow AS code to use these properties
+
+/**
+ * @type {number}
+ */
+Date.prototype.date;
+
+/**
+ * @type {number}
+ */
+Date.prototype.dateUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.day;
+
+/**
+ * @type {number}
+ */
+Date.prototype.dayUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.fullYear;
+
+/**
+ * @type {number}
+ */
+Date.prototype.fullYearUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.hours;
+
+/**
+ * @type {number}
+ */
+Date.prototype.hoursUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.milliseconds;
+
+/**
+ * @type {number}
+ */
+Date.prototype.millisecondsUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.minutes;
+
+/**
+ * @type {number}
+ */
+Date.prototype.minutesUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.month;
+
+/**
+ * @type {number}
+ */
+Date.prototype.monthUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.seconds;
+
+/**
+ * @type {number}
+ */
+Date.prototype.secondsUTC;
+
+/**
+ * @type {number}
+ */
+Date.prototype.time;
+
+/**
+ * @type {number}
+ */
+Date.prototype.timezoneOffset;
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index 3e62a20b4..4aa70248f 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -516,9 +516,11 @@ else if (node.getNodeID() == ASTNodeID.Op_InID &&
     	FULLYEAR("fullYear", "getFullYear"),
     	MONTH("month", "getMonth"),
     	DATE("date", "getDate"),
+    	DAY("day", "getDay"),
     	FULLYEARUTC("fullYearUTC", "getUTCFullYear"),
     	MONTHUTC("monthUTC", "getUTCMonth"),
     	DATEUTC("dateUTC", "getUTCDate"),
+    	DAYUTC("dayUTC", "getUTCDay"),
     	HOURS("hours", "getHours"),
     	MINUTES("minutes", "getMinutes"),
     	SECONDS("seconds", "getSeconds"),
@@ -526,7 +528,8 @@ else if (node.getNodeID() == ASTNodeID.Op_InID &&
     	HOURSUTC("hoursUTC", "getUTCHours"),
     	MINUTESUTC("minutesUTC", "getUTCMinutes"),
     	SECONDSUTC("secondsUTC", "getUTCSeconds"),
-    	MILLISECONDSUTC("millisecondsUTC", "getUTCMilliseconds");
+    	MILLISECONDSUTC("millisecondsUTC", "getUTCMilliseconds"),
+    	TIMEZONEOFFSET("timezoneOffset", "getTimezoneOffset");
     	
     	DatePropertiesGetters(String value, String functionName)
     	{
@@ -554,9 +557,11 @@ public String getValue()
     	FULLYEAR("fullYear", "setFullYear"),
     	MONTH("month", "setMonth"),
     	DATE("date", "setDate"),
+    	DAY("day", "setDay"),
     	FULLYEARUTC("fullYearUTC", "setUTCFullYear"),
     	MONTHUTC("monthUTC", "setUTCMonth"),
     	DATEUTC("dateUTC", "setUTCDate"),
+    	DAYUTC("day", "setUTCDay"),
     	HOURS("hours", "setHours"),
     	MINUTES("minutes", "setMinutes"),
     	SECONDS("seconds", "setSeconds"),
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
index 92a12f715..9d247f8a3 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
@@ -69,6 +69,7 @@
 import org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyaleEmitter;
 import org.apache.royale.compiler.internal.definitions.AccessorDefinition;
 import org.apache.royale.compiler.internal.definitions.FunctionDefinition;
+import org.apache.royale.compiler.internal.definitions.VariableDefinition;
 import org.apache.royale.compiler.internal.embedding.EmbedData;
 import org.apache.royale.compiler.internal.embedding.EmbedMIMEType;
 import org.apache.royale.compiler.internal.projects.CompilerProject;
@@ -1258,6 +1259,8 @@ public boolean isDateProperty(IExpressionNode obj, boolean writeAccess)
 			{
 				if (rightDef instanceof AccessorDefinition)
 					return true;
+				else if (rightDef instanceof VariableDefinition)
+					return true;
 				else if (rightDef == null && rightNode.getNodeID() == ASTNodeID.IdentifierID)
 				{
 					if (writeAccess)
diff --git a/compiler/src/test/java/as/ASDateTests.java b/compiler/src/test/java/as/ASDateTests.java
new file mode 100644
index 000000000..65b8d7eac
--- /dev/null
+++ b/compiler/src/test/java/as/ASDateTests.java
@@ -0,0 +1,389 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package as;
+
+import org.junit.Test;
+
+/**
+ * Feature tests for AS Date objects
+ */
+public class ASDateTests extends ASFeatureTestsBase
+{
+
+    @Test
+    public void ASDateTests_date()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.date += 1;",
+            "assertEqual('date.date', date.date, 1);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_dateUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.dateUTC += 1;",
+            "assertEqual('date.dateUTC', date.dateUTC, 2);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_day()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.day += 1;",
+            "assertEqual('date.day', date.day, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_dayUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.dayUTC += 1;",
+            "assertEqual('date.dayUTC', date.dayUTC, 1);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_fullYear()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Mon Dec 31 23:59:59 GMT-0800 2018');",
+            "date.fullYear += 1;",
+            "assertEqual('date.fullYear', date.fullYear, 2019);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+    
+    @Test
+    public void ASDateTests_fullYearUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Mon Dec 31 23:59:59 GMT-0800 2018');",
+            "date.fullYearUTC += 1;",
+            "assertEqual('date.fullYearUTC', date.fullYearUTC, 2020);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_hours()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.hours += 1;",
+            "assertEqual('date.hours', date.hours, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_hoursUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.hoursUTC += 1;",
+            "assertEqual('date.hoursUTC', date.hoursUTC, 8);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_milliseconds()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.milliseconds -= 1;",
+            "assertEqual('date.milliseconds', date.milliseconds, 999);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_millisecondsUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.millisecondsUTC -= 1;",
+            "assertEqual('date.millisecondsUTC', date.millisecondsUTC, 999);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_minutes()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.minutes += 1;",
+            "assertEqual('date.minutes', date.minutes, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_minutesUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.minutesUTC += 1;",
+            "assertEqual('date.minutesUTC', date.minutesUTC, 1);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_month()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.month += 1;",
+            "assertEqual('date.month', date.month, 6);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_monthUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.monthUTC += 1;",
+            "assertEqual('date.monthUTC', date.monthUTC, 7);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_seconds()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.seconds += 1;",
+            "assertEqual('date.seconds', date.seconds, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_secondsUTC()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.secondsUTC += 1;",
+            "assertEqual('date.secondsUTC', date.secondsUTC, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_time()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.time += 1;",
+            "assertEqual('date.time', date.time, 1530431999001);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+
+    @Test
+    public void ASDateTests_timezoneOffset_get()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "assertEqual('date.timezoneOffset', date.timezoneOffset, -480);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndRun(source);
+    }
+    
+    @Test
+    public void ASDateTests_timezoneOffset_set()
+    {
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+        };
+        String[] testCode = new String[]
+        {
+            "var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
+            "date.timezoneOffset += 480;",
+            "assertEqual('date.timezoneOffset', date.timezoneOffset, 0);",
+        };
+        String source = getAS(imports, declarations, testCode, new String[0]);
+        compileAndExpectErrors(source, false, false, false, null, "Property timezoneOffset is read-only.\n");
+    }
+}
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dateUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dateUTC_swfdump.xml
new file mode 100644
index 000000000..b75ab6b95
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dateUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/%0.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=834 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}.${build" build="number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0
+    //  method_info  3
+    //  max_stack    1
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  6
+    bb0
+      succs=[]
+      0      getlocal0
+      1      pushscope
+      2      getlocal0
+      3      constructsuper    0
+      4      returnvoid
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler
+    //  method_info  1
+    //  max_stack    4
+    //  max_regs     3
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  35
+    bb0
+      succs=[]
+      0       getlocal0
+      1       pushscope
+      2       findpropstrict  Date
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"
+      4       constructprop
+      5       coerce          Date
+      6       setlocal2
+      7       getlocal2
+      8       getproperty     dateUTC
+      9       pushbyte                                             1
+      10      add
+      11      getlocal2
+      12      swap
+      13      setproperty     dateUTC
+      14      findpropstrict  assertEqual
+      15      pushstring      "date.dateUTC"
+      16      getlocal2
+      17      getproperty     dateUTC
+      18      pushbyte                                             2
+      19      callpropvoid
+      20      returnvoid
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual
+    //  method_info  2
+    //  max_stack    1
+    //  max_regs     4
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null
+    //  method_info  4
+    //  max_stack    0
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    0
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null
+  //  method_info  0
+  //  max_stack    3
+  //  max_regs     1
+  //  scope_depth  0
+  //  max_scope    2
+  //  code_length  14
+  bb0
+    succs=[]
+    0      getlocal0
+    1      pushscope
+    2      getscopeobject                                  0
+    3      getlex          Object
+    4      dup
+    5      pushscope
+    6      newclass
+    7      popscope
+    8      initproperty    %0
+    9      returnvoid
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_date_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_date_swfdump.xml
new file mode 100644
index 000000000..77f7e8acf
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_date_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/%0.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=828 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}.${build" build="number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0
+    //  method_info  3
+    //  max_stack    1
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  6
+    bb0
+      succs=[]
+      0      getlocal0
+      1      pushscope
+      2      getlocal0
+      3      constructsuper    0
+      4      returnvoid
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler
+    //  method_info  1
+    //  max_stack    4
+    //  max_regs     3
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  35
+    bb0
+      succs=[]
+      0       getlocal0
+      1       pushscope
+      2       findpropstrict  Date
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"
+      4       constructprop
+      5       coerce          Date
+      6       setlocal2
+      7       getlocal2
+      8       getproperty     date
+      9       pushbyte                                             1
+      10      add
+      11      getlocal2
+      12      swap
+      13      setproperty     date
+      14      findpropstrict  assertEqual
+      15      pushstring      "date.date"
+      16      getlocal2
+      17      getproperty     date
+      18      pushbyte                                             1
+      19      callpropvoid
+      20      returnvoid
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual
+    //  method_info  2
+    //  max_stack    1
+    //  max_regs     4
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null
+    //  method_info  4
+    //  max_stack    0
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    0
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null
+  //  method_info  0
+  //  max_stack    3
+  //  max_regs     1
+  //  scope_depth  0
+  //  max_scope    2
+  //  code_length  14
+  bb0
+    succs=[]
+    0      getlocal0
+    1      pushscope
+    2      getscopeobject                                  0
+    3      getlex          Object
+    4      dup
+    5      pushscope
+    6      newclass
+    7      popscope
+    8      initproperty    %0
+    9      returnvoid
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dayUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dayUTC_swfdump.xml
new file mode 100644
index 000000000..c7ec5a5f0
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_dayUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests8224847481883983525.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=832 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     dayUTC                                  
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     dayUTC                                  
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.dayUTC"                           
+      16      getlocal2                                               
+      17      getproperty     dayUTC                                  
+      18      pushbyte                                             1  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_day_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_day_swfdump.xml
new file mode 100644
index 000000000..08b2c8d2d
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_day_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests7093379186885950364.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=826 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     day                                     
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     day                                     
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.day"                              
+      16      getlocal2                                               
+      17      getproperty     day                                     
+      18      pushbyte                                             0  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYearUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYearUTC_swfdump.xml
new file mode 100644
index 000000000..ca06b760c
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYearUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests496304591525783341.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=841 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                              
+    //  max_stack    1                              
+    //  max_regs     1                              
+    //  scope_depth  0                              
+    //  max_scope    1                              
+    //  code_length  6                              
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  36           
+    bb0
+      succs=[]
+      0       getlocal0                                                  
+      1       pushscope                                                  
+      2       findpropstrict  Date                                       
+      3       pushstring      "Mon Dec 31 23:59:59 GMT-0800 2018"        
+      4       constructprop                                              
+      5       coerce          Date                                       
+      6       setlocal2                                                  
+      7       getlocal2                                                  
+      8       getproperty     fullYearUTC                                
+      9       pushbyte                                             1     
+      10      add                                                        
+      11      getlocal2                                                  
+      12      swap                                                       
+      13      setproperty     fullYearUTC                                
+      14      findpropstrict  assertEqual                                
+      15      pushstring      "date.fullYearUTC"                         
+      16      getlocal2                                                  
+      17      getproperty     fullYearUTC                                
+      18      pushshort                                            2020  
+      19      callpropvoid                                               
+      20      returnvoid                                                 
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                         
+    1      pushscope                                         
+    2      getscopeobject                                 0  
+    3      getlex          Object                            
+    4      dup                                               
+    5      pushscope                                         
+    6      newclass                                          
+    7      popscope                                          
+    8      initproperty    %0     
+    9      returnvoid                                        
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYear_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYear_swfdump.xml
new file mode 100644
index 000000000..fc34f1d40
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_fullYear_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/%0.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=837 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}.${build" build="number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0
+    //  method_info  3
+    //  max_stack    1
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  6
+    bb0
+      succs=[]
+      0      getlocal0
+      1      pushscope
+      2      getlocal0
+      3      constructsuper    0
+      4      returnvoid
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler
+    //  method_info  1
+    //  max_stack    4
+    //  max_regs     3
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  36
+    bb0
+      succs=[]
+      0       getlocal0
+      1       pushscope
+      2       findpropstrict  Date
+      3       pushstring      "Mon Dec 31 23:59:59 GMT-0800 2018"
+      4       constructprop
+      5       coerce          Date
+      6       setlocal2
+      7       getlocal2
+      8       getproperty     fullYear
+      9       pushbyte                                             1
+      10      add
+      11      getlocal2
+      12      swap
+      13      setproperty     fullYear
+      14      findpropstrict  assertEqual
+      15      pushstring      "date.fullYear"
+      16      getlocal2
+      17      getproperty     fullYear
+      18      pushshort                                            2019
+      19      callpropvoid
+      20      returnvoid
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual
+    //  method_info  2
+    //  max_stack    1
+    //  max_regs     4
+    //  scope_depth  0
+    //  max_scope    1
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null
+    //  method_info  4
+    //  max_stack    0
+    //  max_regs     1
+    //  scope_depth  0
+    //  max_scope    0
+    //  code_length  1
+    bb0
+      succs=[]
+      0      returnvoid
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null
+  //  method_info  0
+  //  max_stack    3
+  //  max_regs     1
+  //  scope_depth  0
+  //  max_scope    2
+  //  code_length  14
+  bb0
+    succs=[]
+    0      getlocal0
+    1      pushscope
+    2      getscopeobject                                  0
+    3      getlex          Object
+    4      dup
+    5      pushscope
+    6      newclass
+    7      popscope
+    8      initproperty    %0
+    9      returnvoid
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hoursUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hoursUTC_swfdump.xml
new file mode 100644
index 000000000..9b2759d9e
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hoursUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests4582668311951197930.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=836 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     hoursUTC                                
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     hoursUTC                                
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.hoursUTC"                         
+      16      getlocal2                                               
+      17      getproperty     hoursUTC                                
+      18      pushbyte                                             8  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hours_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hours_swfdump.xml
new file mode 100644
index 000000000..2ac3a89a0
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_hours_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests7909619773103326674.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=830 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     hours                                   
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     hours                                   
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.hours"                            
+      16      getlocal2                                               
+      17      getproperty     hours                                   
+      18      pushbyte                                             0  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_millisecondsUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_millisecondsUTC_swfdump.xml
new file mode 100644
index 000000000..09c8cd374
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_millisecondsUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests3159056501171661713.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=851 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  36           
+    bb0
+      succs=[]
+      0       getlocal0                                                 
+      1       pushscope                                                 
+      2       findpropstrict  Date                                      
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"       
+      4       constructprop                                             
+      5       coerce          Date                                      
+      6       setlocal2                                                 
+      7       getlocal2                                                 
+      8       getproperty     millisecondsUTC                           
+      9       pushbyte                                             1    
+      10      subtract                                                  
+      11      getlocal2                                                 
+      12      swap                                                      
+      13      setproperty     millisecondsUTC                           
+      14      findpropstrict  assertEqual                               
+      15      pushstring      "date.millisecondsUTC"                    
+      16      getlocal2                                                 
+      17      getproperty     millisecondsUTC                           
+      18      pushshort                                            999  
+      19      callpropvoid                                              
+      20      returnvoid                                                
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_milliseconds_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_milliseconds_swfdump.xml
new file mode 100644
index 000000000..c4735c135
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_milliseconds_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests8509891553433215777.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=845 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  36           
+    bb0
+      succs=[]
+      0       getlocal0                                                 
+      1       pushscope                                                 
+      2       findpropstrict  Date                                      
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"       
+      4       constructprop                                             
+      5       coerce          Date                                      
+      6       setlocal2                                                 
+      7       getlocal2                                                 
+      8       getproperty     milliseconds                              
+      9       pushbyte                                             1    
+      10      subtract                                                  
+      11      getlocal2                                                 
+      12      swap                                                      
+      13      setproperty     milliseconds                              
+      14      findpropstrict  assertEqual                               
+      15      pushstring      "date.milliseconds"                       
+      16      getlocal2                                                 
+      17      getproperty     milliseconds                              
+      18      pushshort                                            999  
+      19      callpropvoid                                              
+      20      returnvoid                                                
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutesUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutesUTC_swfdump.xml
new file mode 100644
index 000000000..7d4b86d28
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutesUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests1914641614797416572.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=840 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     minutesUTC                              
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     minutesUTC                              
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.minutesUTC"                       
+      16      getlocal2                                               
+      17      getproperty     minutesUTC                              
+      18      pushbyte                                             1  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutes_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutes_swfdump.xml
new file mode 100644
index 000000000..cd42b182b
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_minutes_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests9039162940843796750.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=834 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     minutes                                 
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     minutes                                 
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.minutes"                          
+      16      getlocal2                                               
+      17      getproperty     minutes                                 
+      18      pushbyte                                             0  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_monthUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_monthUTC_swfdump.xml
new file mode 100644
index 000000000..2c6cb2b0b
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_monthUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests4263460883476555883.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=836 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     monthUTC                                
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     monthUTC                                
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.monthUTC"                         
+      16      getlocal2                                               
+      17      getproperty     monthUTC                                
+      18      pushbyte                                             7  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_month_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_month_swfdump.xml
new file mode 100644
index 000000000..cb2ac083c
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_month_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests5050292435478537197.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=830 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     month                                   
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     month                                   
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.month"                            
+      16      getlocal2                                               
+      17      getproperty     month                                   
+      18      pushbyte                                             6  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_secondsUTC_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_secondsUTC_swfdump.xml
new file mode 100644
index 000000000..73b7e130a
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_secondsUTC_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests8789500309518206008.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=840 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     secondsUTC                              
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     secondsUTC                              
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.secondsUTC"                       
+      16      getlocal2                                               
+      17      getproperty     secondsUTC                              
+      18      pushbyte                                             0  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_seconds_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_seconds_swfdump.xml
new file mode 100644
index 000000000..96f5bc474
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_seconds_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests1273857251658499900.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=834 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     seconds                                 
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     seconds                                 
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.seconds"                          
+      16      getlocal2                                               
+      17      getproperty     seconds                                 
+      18      pushbyte                                             0  
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_time_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_time_swfdump.xml
new file mode 100644
index 000000000..01d424ed8
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_time_swfdump.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests8684648950939492427.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=836 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  35           
+    bb0
+      succs=[]
+      0       getlocal0                                               
+      1       pushscope                                               
+      2       findpropstrict  Date                                    
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"     
+      4       constructprop                                           
+      5       coerce          Date                                    
+      6       setlocal2                                               
+      7       getlocal2                                               
+      8       getproperty     time                                    
+      9       pushbyte                                             1  
+      10      add                                                     
+      11      getlocal2                                               
+      12      swap                                                    
+      13      setproperty     time                                    
+      14      findpropstrict  assertEqual                             
+      15      pushstring      "date.time"                             
+      16      getlocal2                                               
+      17      getproperty     time                                    
+      18      pushdouble                                              
+      19      callpropvoid                                            
+      20      returnvoid                                              
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>
diff --git a/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_timezoneOffset_get_swfdump.xml b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_timezoneOffset_get_swfdump.xml
new file mode 100644
index 000000000..86f3e66d0
--- /dev/null
+++ b/compiler/src/test/resources/swfdumps/as_ASDateTests_ASDateTests_timezoneOffset_get_swfdump.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!-- Parsing swf file:/C:/Work/Royale/royale-compiler/compiler/target/junit-temp/ASDateTests7609805229404991102.swf -->
+<swf xmlns="http://macromedia/2003/swfx" version="14" framerate="24.0" size="10000x7500" compressed="true" >
+  <!-- framecount=1 length=842 -->
+  <FileAttributes useDirectBlit="false" useGPU="false" hasMetadata="true" actionScript3="true" suppressCrossDomainCaching="false" swfRelativeUrls="false" useNetwork="true"/>
+  <Metadata>
+        <![CDATA[<?xml version="1.0" ?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:asc="http://ns.adobe.com/asc/2012">
+        <dc:format>application/x-shockwave-flash</dc:format>
+        <asc:compiler name="Apache Royale Compiler" version="${release.version}" build="${build.number}"/>
+    </rdf:Description>
+</rdf:RDF>
+]]>
+  </Metadata>
+  <SetBackgroundColor color="#FFFFFF"/>
+  <ScriptLimits scriptRecursionLimit="1000" scriptTimeLimit="60"/>
+  <DoABC>
+// script 0
+
+// class_id=0 slot_id=0
+public class %0 extends Object
+{
+
+  // method_id=3
+  public function %0():*
+  {
+    //  derivedName  %0  
+    //  method_info  3                               
+    //  max_stack    1                               
+    //  max_regs     1                               
+    //  scope_depth  0                               
+    //  max_scope    1                               
+    //  code_length  6                               
+    bb0
+      succs=[]
+      0      getlocal0            
+      1      pushscope            
+      2      getlocal0            
+      3      constructsuper    0  
+      4      returnvoid           
+  }
+
+  private function initHandler(Object):void
+  {
+    //  derivedName  initHandler  
+    //  method_info  1            
+    //  max_stack    4            
+    //  max_regs     3            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  29           
+    bb0
+      succs=[]
+      0       getlocal0                                                  
+      1       pushscope                                                  
+      2       findpropstrict  Date                                       
+      3       pushstring      "Sat Jun 30 23:59:59 GMT-0800 2018"        
+      4       constructprop                                              
+      5       coerce          Date                                       
+      6       setlocal2                                                  
+      7       findpropstrict  assertEqual                                
+      8       pushstring      "date.timezoneOffset"                      
+      9       getlocal2                                                  
+      10      getproperty     timezoneOffset                             
+      11      pushshort                                            -480  
+      12      callpropvoid                                               
+      13      returnvoid                                                 
+  }
+
+  private function assertEqual(String,*,*):void
+  {
+    //  derivedName  assertEqual  
+    //  method_info  2            
+    //  max_stack    1            
+    //  max_regs     4            
+    //  scope_depth  0            
+    //  max_scope    1            
+    //  code_length  1            
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+
+  public static function %0$():*
+  {
+    //  derivedName  null  
+    //  method_info  4     
+    //  max_stack    0     
+    //  max_regs     1     
+    //  scope_depth  0     
+    //  max_scope    0     
+    //  code_length  1     
+    bb0
+      succs=[]
+      0      returnvoid      
+  }
+}
+
+function script0$init():*
+{
+  //  derivedName  null  
+  //  method_info  0     
+  //  max_stack    3     
+  //  max_regs     1     
+  //  scope_depth  0     
+  //  max_scope    2     
+  //  code_length  14    
+  bb0
+    succs=[]
+    0      getlocal0                                          
+    1      pushscope                                          
+    2      getscopeobject                                  0  
+    3      getlex          Object                             
+    4      dup                                                
+    5      pushscope                                          
+    6      newclass                                           
+    7      popscope                                           
+    8      initproperty    %0     
+    9      returnvoid                                         
+}
+
+  </DoABC>
+  <SymbolClass>
+    <Symbol idref="0" className="%0" />
+  </SymbolClass>
+  <ShowFrame/>
+</swf>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services