1046: Type was not found or was not a compile-time constant

Came across this little oddity the other day. Took me ages to work out what was going on, so thought I would share in case anyone else ran into the same issue.

One day, for a reason I couldn’t fathom, my project stopped compiling. I kept getting these odd “1046: Type was not found or was not a compile-time constant” errors all over the place. Not only that, when I tried to include the class in question either via auto-complete (control & space) or via manual import the error persisted.

To cut a long story short it seems that if you try to new a member property that is of type Class from another class and the constructor takes in at least one parameter the error will occur.

So for example take the two following classes:

[codesyntax lang=”actionscript3″]

package package2
{
	import package1.MyTestClass;

	public class MyTestClass2
	{
		public var type : Class = MyTestClass;
	}
}

[/codesyntax]

And

[codesyntax lang=”actionscript”]

package package1
{
	public class MyTestClass
	{
		public function MyTestClass(someVar:String)
		{
			trace(someVar);
		}
	}
}

[/codesyntax]

Now try using them in the following fashion:

[codesyntax lang=”mxml”]

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="application1_creationCompleteHandler(event)">

	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;			

			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				var class2 : MyTestClass2 = new MyTestClass2();
				var class1 : MyTestClass = new (class2.type)("hello");
			}

		]]>
	</fx:Script>

</s:Application>

[/codesyntax]

And uh oh, bad times:

[codesyntax lang=”php”]

1046: Type was not found or was not a compile-time constant: MyTestClass.	FlexBugExperiment.mxml	/FlexBugExperiment/src/main	line 14	Flex Problem

1046: Type was not found or was not a compile-time constant: MyTestClass2.	FlexBugExperiment.mxml	/FlexBugExperiment/src/main	line 13	Flex Problem

1180: Call to a possibly undefined method MyTestClass2.	FlexBugExperiment.mxml	/FlexBugExperiment/src/main	line 13	Flex Problem

[/codesyntax]

The bad line is:

[codesyntax lang=”actionscript”]

var class1 : MyTestClass = new (class2.type)("hello");

[/codesyntax]

If you take away the “hello” part or you split it out into two lines like so:

[codesyntax lang=”actionscript”]

var tmpC : Class = (class2.type);
var class1 : MyTestClass = new tmpC("hello");

[/codesyntax]

Then everything is gravy

Anyway, I hope this helped someone out!

Playdemic acquired by RockYou

Well as it has now hit the media I guess I can blog about it.

Last week it was announced that my current employer Playdemic was acquired by the much larger Redwood City based company RockYou.

This is obviously great news for all concerned and can only lead to further greatness as we expand and grow under our American overlords :)

PostToTumblr’s 1,628th User Celebration

To celebrate the 1,628th user of my Chrome extension PostToTumblr I have just uploaded a new version that adds a requested feature.

The new feature allows the user to post to multiple Tumblr blogs.

Once specified in the options you are now presented with a sub-menu when posting images allowing you to choose your alternative blogs or just the default blog:

Important to note is that you are only presented this sub-menu if you have specified alternative blogs in the options.

Chrome should auto-update the extension for you soon!