<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Reflection</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>Recent changes to Reflection</description><atom:link href="https://sourceforge.net/p/asil/wiki/Reflection/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 13 Feb 2014 23:41:07 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/asil/wiki/Reflection/feed" rel="self" type="application/rss+xml"/><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -1,9 +1,21 @@
-Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.  Variables like  &lt;code&gt;&amp; int&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt; share the same Type instance, but different TypeInstance instances.)
+[TOC]

-The **type** member in every type
----------------------------------
-Every type, including primitives, has a special member called type.  (If you need "type" as the name of a member or method, use "@type" instead.)  This is a TypeInstance instance and can be compared with a Type instance.  You can explicitly access the Type instance with "&lt;code&gt;type.declaration&lt;/code&gt;".
+Overview
+--------
+Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.  Variables like  &lt;code&gt;ref int&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt; share the same Type instance, but different TypeInstance instances.)
+
+A variable declared using a shortcut versus a variable declared without a shortcut
+----------------------------------------------------------------------------------
+It doesn't matter if you declare a variable with or without a type shortcut.  Both &lt;code&gt;var int i&lt;/code&gt; and &lt;code&gt;var i%&lt;/code&gt; share the same Type instance.
+
+The &lt;code&gt;type&lt;/code&gt; member in every type
+------------------------------------------
+Every type, including primitives, has a special member called type.  (If you need "type" as the name of a member or method, you'll need to declare it with the **[new](keywords-new)** keyword.)  This is a TypeInstance instance and can be compared with a Type instance.  You can explicitly access the Type instance with "&lt;code&gt;type.declaration&lt;/code&gt;".

 Accessing a Type instance without a instance of the type
 --------------------------------------------------------
-Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;int = 2.type.declartion&lt;/code&gt;" is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
+Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;int = 2.type.declaration&lt;/code&gt;" is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
+
+[Type aliases]
+--------------
+Type aliases pose a special challenge.  A TypeAlias has a class very similar to TypeInstance called TypeAlias.  However, a TypeAlias can be based on another TypeAlias as long as there are no circular references.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 13 Feb 2014 23:41:07 -0000</pubDate><guid>https://sourceforge.neta2342f9c486d44f605cae107927f0af7ca3d69be</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -2,8 +2,8 @@

 The **type** member in every type
 ---------------------------------
-Every type, including primitives, has a special members called type.  (If you need "type" as the name of a member or method, use "@type" instead.)  This is a TypeInstance instance and can be compared with a Type instance.  You can explicitly access the Type instance with "&lt;code&gt;type.declaration&lt;/code&gt;".
+Every type, including primitives, has a special member called type.  (If you need "type" as the name of a member or method, use "@type" instead.)  This is a TypeInstance instance and can be compared with a Type instance.  You can explicitly access the Type instance with "&lt;code&gt;type.declaration&lt;/code&gt;".

 Accessing a Type instance without a instance of the type
 --------------------------------------------------------
-Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;int = 2.type&lt;/code&gt;" is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
+Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;int = 2.type.declartion&lt;/code&gt;" is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sat, 08 Feb 2014 13:58:15 -0000</pubDate><guid>https://sourceforge.net51f31a4a157b5fcc144f3ad82526048f978226de</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -6,4 +6,4 @@

 Accessing a Type instance without a instance of the type
 --------------------------------------------------------
-Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;String = "value".type&lt;/code&gt; is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
+Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;int = 2.type&lt;/code&gt;" is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 20:29:29 -0000</pubDate><guid>https://sourceforge.netc28b7aaea16836eeb5e332b0a9ed75915641a5ab</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -6,4 +6,4 @@

 Accessing a Type instance without a instance of the type
 --------------------------------------------------------
-Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
+Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  So "&lt;code&gt;String = "value".type&lt;/code&gt; is a true expression.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 20:27:36 -0000</pubDate><guid>https://sourceforge.net850d6f77e192295af302ccd665f1a9c34b244683</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -6,4 +6,4 @@

 Accessing a Type instance without a instance of the type
 --------------------------------------------------------
-Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  The Type class will be comparable to those in other languages.
+Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  This includes the identifier for a generic type parameter.  The Type class will be comparable to those in other languages.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 20:26:06 -0000</pubDate><guid>https://sourceforge.nete505814734037f70cbf059e793d16d563c4b9d91</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,4 +1,4 @@
-Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.  Variables like  &lt;code&gt;&amp; int&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt; share the same Type isntance, but different TypeInstance instances.)
+Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.  Variables like  &lt;code&gt;&amp; int&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt; share the same Type instance, but different TypeInstance instances.)

 The **type** member in every type
 ---------------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 17:48:21 -0000</pubDate><guid>https://sourceforge.neta707f364a8e934824372ca9b87fc7d795386fa63</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,4 +1,4 @@
-Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.)
+Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.  Variables like  &lt;code&gt;&amp; int&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt; share the same Type isntance, but different TypeInstance instances.)

 The **type** member in every type
 ---------------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 17:47:32 -0000</pubDate><guid>https://sourceforge.netae4407393062eb61dbfdb71946ebd34c524678c1</guid></item><item><title>Reflection modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Reflection/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Type reflection in ASIL is done via the Type and TypeInstance classes.  (TypeInstance contains a Type reference and is used to differentiate between various types of references and value instances.)&lt;/p&gt;
&lt;h2 id="the-type-member-in-every-type"&gt;The &lt;strong&gt;type&lt;/strong&gt; member in every type&lt;/h2&gt;
&lt;p&gt;Every type, including primitives, has a special members called type.  (If you need "type" as the name of a member or method, use "@type" instead.)  This is a TypeInstance instance and can be compared with a Type instance.  You can explicitly access the Type instance with "&lt;code&gt;type.declaration&lt;/code&gt;".&lt;/p&gt;
&lt;h2 id="accessing-a-type-instance-without-a-instance-of-the-type"&gt;Accessing a Type instance without a instance of the type&lt;/h2&gt;
&lt;p&gt;Unlike other languages, ASIL doesn't need a special operator to turn a type name into the type used for reflection.  If the parser encounters a type name where a type name wasn't expected, it tries the corresponding Type instance instead.  The Type class will be comparable to those in other languages.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 17:43:16 -0000</pubDate><guid>https://sourceforge.netcd7499ef8198e024b51c4fcdccb60d2945a2d494</guid></item></channel></rss>