<html>
<head>
<style><!--
body {background-color:#ffffff;}
.file {border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;}
.pathname {font-family:monospace; float:right;}
.fileheader {margin-bottom:.5em;}
.diff {margin:0;}
.tasklist {padding:4px;border:1px dashed #000000;margin-top:1em;}
.tasklist ul {margin-top:0;margin-bottom:0;}
tr.alt {background-color:#eeeeee}
#added {background-color:#ddffdd;}
#addedchars {background-color:#99ff99;font-weight:bolder;}
tr.alt #added {background-color:#ccf7cc;}
#removed {background-color:#ffdddd;}
#removedchars {background-color:#ff9999;font-weight:bolder;}
tr.alt #removed {background-color:#f7cccc;}
#copied {background-color:#ccccff;}
tr.alt #copied {background-color:#bbbbf7;}
#info {color:#888888;}
#context {background-color:#eeeeee;}
td {padding-left:.3em;padding-right:.3em;}
tr.head {border-bottom-width:1px;border-bottom-style:solid;}
tr.head td {padding:0;padding-top:.2em;}
.task {background-color:#ffff00;}
.comment {white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd}
.error {color:red;}
hr {border-width:0px;height:2px;background:black;}
--></style>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head"><td colspan="5">Commit in <b><tt>metaas/trunk/src</tt></b></td></tr>
<tr><td><tt>main/antlr/org/asdt/core/internal/antlr/<a href="#file1">AS3.g3</a></tt> </td><td></td><td align="right" id="added">+4</td><td align="right" id="removed">-2</td><td nowrap="nowrap" align="center">490 -> 491</td></tr>
<tr class="alt"><td><tt>main/java/uk/co/badgersinfoil/metaas/dom/<a href="#file2">Visibility.java</a></tt> </td><td></td><td align="right" id="added">+11</td><td align="right" id="removed">-2</td><td nowrap="nowrap" align="center">490 -> 491</td></tr>
<tr><td><tt>main/java/uk/co/badgersinfoil/metaas/impl/<a href="#file3">ModifierUtils.java</a></tt> </td><td></td><td align="right" id="added">+42</td><td align="right" id="removed">-6</td><td nowrap="nowrap" align="center">490 -> 491</td></tr>
<tr class="alt"><td><tt>test/java/uk/co/badgersinfoil/metaas/<a href="#file4">ASMethodTests.java</a></tt> </td><td></td><td align="right" id="added">+6</td><td></td><td nowrap="nowrap" align="center">490 -> 491</td></tr>
<tr><td></td><td></td><td align="right" id="added">+63</td><td align="right" id="removed">-10</td><td></td></tr>
</table>
<small id="info">4 modified files</small><br />
<pre class="comment">
expose support for 'protected' and 'internal' keywords
</pre>
<hr /><a name="file1" /><div class="file">
<span class="pathname">metaas/trunk/src/main/antlr/org/asdt/core/internal/antlr</span><br />
<div class="fileheader"><big><b>AS3.g3</b></big> <small id="info">490 -> 491</small></div>
<pre class="diff"><small id="info">--- trunk/src/main/antlr/org/asdt/core/internal/antlr/AS3.g3        2007-06-27 22:29:01 UTC (rev 490)
+++ trunk/src/main/antlr/org/asdt/core/internal/antlr/AS3.g3        2007-06-27 22:58:48 UTC (rev 491)
@@ -667,8 +667,8 @@
</small></pre><pre class="diff" id="context"> reservedNamespace
        :        PUBLIC
        |        PRIVATE
</pre><pre class="diff" id="removed">-        |        'protected'
-        |        'internal'
</pre><pre class="diff" id="added">+        |        PROTECTED
+        |        INTERNAL
</pre><pre class="diff" id="context">        
identifierStar
</pre><pre class="diff"><small id="info">@@ -1135,6 +1135,8 @@
</small></pre><pre class="diff" id="context"> PACKAGE                :        'package';
PUBLIC                :        'public';
PRIVATE                :        'private';
</pre><pre class="diff" id="added">+PROTECTED        :        'protected';
+INTERNAL        :        'internal';
</pre><pre class="diff" id="context"> FUNCTION        :        'function';
EXTENDS                :        'extends';
IMPLEMENTS        :        'implements';
</pre></div>
<hr /><a name="file2" /><div class="file">
<span class="pathname">metaas/trunk/src/main/java/uk/co/badgersinfoil/metaas/dom</span><br />
<div class="fileheader"><big><b>Visibility.java</b></big> <small id="info">490 -> 491</small></div>
<pre class="diff"><small id="info">--- trunk/src/main/java/uk/co/badgersinfoil/metaas/dom/Visibility.java        2007-06-27 22:29:01 UTC (rev 490)
+++ trunk/src/main/java/uk/co/badgersinfoil/metaas/dom/Visibility.java        2007-06-27 22:58:48 UTC (rev 491)
@@ -24,8 +24,17 @@
</small></pre><pre class="diff" id="context">         public static final Visibility PUBLIC = new AccessVisibility("public");
        /**
</pre><pre class="diff" id="removed">-         * Default access, as specified by the lack of either a "public or
-         * "private" modifier.
</pre><pre class="diff" id="added">+         * Protected access, as specified by the "protected" modifier.
</pre><pre class="diff" id="context">          */
</pre><pre class="diff" id="added">+        public static final Visibility PROTECTED = new AccessVisibility("protected");
+
+        /**
+         * Internal access, as specified by the "internal" modifier.
+         */
+        public static final Visibility INTERNAL = new AccessVisibility("internal");
+
+        /**
+         * Default access, as specified by the lack of any specific keyword.
+         */
</pre><pre class="diff" id="context">         public static final Visibility DEFAULT = new AccessVisibility("[default]");
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file3" /><div class="file">
<span class="pathname">metaas/trunk/src/main/java/uk/co/badgersinfoil/metaas/impl</span><br />
<div class="fileheader"><big><b>ModifierUtils.java</b></big> <small id="info">490 -> 491</small></div>
<pre class="diff"><small id="info">--- trunk/src/main/java/uk/co/badgersinfoil/metaas/impl/ModifierUtils.java        2007-06-27 22:29:01 UTC (rev 490)
+++ trunk/src/main/java/uk/co/badgersinfoil/metaas/impl/ModifierUtils.java        2007-06-27 22:58:48 UTC (rev 491)
@@ -26,6 +26,12 @@
</small></pre><pre class="diff" id="context">                         if (mod.getType() == AS3Parser.PUBLIC) {
                                return Visibility.PUBLIC;
                        }
</pre><pre class="diff" id="added">+                        if (mod.getType() == AS3Parser.PROTECTED) {
+                                return Visibility.PROTECTED;
+                        }
+                        if (mod.getType() == AS3Parser.INTERNAL) {
+                                return Visibility.INTERNAL;
+                        }
</pre><pre class="diff" id="context">                 }
                return Visibility.DEFAULT;
        }
</pre><pre class="diff"><small id="info">@@ -33,15 +39,19 @@
</small></pre><pre class="diff" id="context">         public static void setVisibility(LinkedListTree modifiers, Visibility protection) {
                for (ASTIterator i=new ASTIterator(modifiers); i.hasNext(); ) {
                        LinkedListTree mod = i.next();
</pre><pre class="diff" id="removed">-                        if (mod.getType() == AS3Parser.PRIVATE
-                         ||mod.getType() == AS3Parser.PUBLIC)
-                        {
</pre><pre class="diff" id="added">+                        if (isVisibilityKeyword(mod)) {
</pre><pre class="diff" id="context">                                 if (Visibility.PRIVATE == protection) {
                                        mod.token.setType(AS3Parser.PRIVATE);
                                        mod.token.setText("private");
                                } else if (Visibility.PUBLIC == protection) {
                                        mod.token.setType(AS3Parser.PUBLIC);
                                        mod.token.setText("public");
</pre><pre class="diff" id="added">+                                } else if (Visibility.PROTECTED == protection) {
+                                        mod.token.setType(AS3Parser.PROTECTED);
+                                        mod.token.setText("protected");
+                                } else if (Visibility.INTERNAL == protection) {
+                                        mod.token.setType(AS3Parser.INTERNAL);
+                                        mod.token.setText("internal");
</pre><pre class="diff" id="context">                                 } else if (Visibility.DEFAULT == protection) {
                                        i.remove();
                                        if (modifiers.getChildCount() == 0) {
</pre><pre class="diff"><small id="info">@@ -59,9 +69,24 @@
</small></pre><pre class="diff" id="context">                         LinkedListTree node = ASTUtils.newAST(AS3Parser.PUBLIC, "public");
                        node.appendToken(TokenBuilder.newSpace());
                        modifiers.addChildWithTokens(node);
</pre><pre class="diff" id="added">+                } else if (Visibility.PROTECTED == protection) {
+                        LinkedListTree node = ASTUtils.newAST(AS3Parser.PROTECTED, "protected");
+                        node.appendToken(TokenBuilder.newSpace());
+                        modifiers.addChildWithTokens(node);
+                } else if (Visibility.INTERNAL == protection) {
+                        LinkedListTree node = ASTUtils.newAST(AS3Parser.INTERNAL, "internal");
+                        node.appendToken(TokenBuilder.newSpace());
+                        modifiers.addChildWithTokens(node);
</pre><pre class="diff" id="context">                 }
        }
</pre><pre class="diff" id="added">+        private static boolean isVisibilityKeyword(LinkedListTree mod) {
+                return mod.getType() == AS3Parser.PRIVATE
+                 ||mod.getType() == AS3Parser.PUBLIC
+                 ||mod.getType() == AS3Parser.PROTECTED
+                 ||mod.getType() == AS3Parser.INTERNAL;
+        }
+
</pre><pre class="diff" id="context">         private static void deleteAllChildTokens(LinkedListTree modifiers) {
                for (LinkedListToken tok=modifiers.getStartToken(); tok!=null && tok!=modifiers.getStopToken(); ) {
                        LinkedListToken next = tok.getNext();
</pre><pre class="diff"><small id="info">@@ -74,11 +99,14 @@
</small></pre><pre class="diff" id="context">
        /**
         * Constructs a new MODIFIERS node which represents the given
</pre><pre class="diff" id="removed">-         * visibility as an AST containing either "public", "private" or
-         * nothing.
</pre><pre class="diff" id="added">+         * visibility as an AST containing either "public", "private",
+         * "protected", "internal" or no children (i.e. default visibility).
</pre><pre class="diff" id="context">          */
        public static LinkedListTree toModifiers(Visibility visibility) {
</pre><pre class="diff" id="removed">-                LinkedListTree modifiers = ASTUtils.newAST(AS3Parser.MODIFIERS);
</pre><pre class="diff" id="added">+                if (Visibility.DEFAULT.equals(visibility)) {
+                        return ASTUtils.newPlaceholderAST(AS3Parser.MODIFIERS);
+                }
+                LinkedListTree modifiers = ASTUtils.newImaginaryAST(AS3Parser.MODIFIERS);
</pre><pre class="diff" id="context">                 if (Visibility.PUBLIC.equals(visibility)) {
                        LinkedListTree modPublic = ASTUtils.newAST(AS3Parser.PUBLIC, "public");
                        modPublic.appendToken(TokenBuilder.newSpace());
</pre><pre class="diff"><small id="info">@@ -87,6 +115,14 @@
</small></pre><pre class="diff" id="context">                         LinkedListTree modPrivate = ASTUtils.newAST(AS3Parser.PRIVATE, "private");
                        modPrivate.appendToken(TokenBuilder.newSpace());
                        modifiers.addChildWithTokens(modPrivate);
</pre><pre class="diff" id="added">+                } else if (Visibility.PROTECTED.equals(visibility)) {
+                        LinkedListTree modProtected = ASTUtils.newAST(AS3Parser.PROTECTED, "protected");
+                        modProtected.appendToken(TokenBuilder.newSpace());
+                        modifiers.addChildWithTokens(modProtected);
+                } else if (Visibility.INTERNAL.equals(visibility)) {
+                        LinkedListTree modInternal = ASTUtils.newAST(AS3Parser.INTERNAL, "internal");
+                        modInternal.appendToken(TokenBuilder.newSpace());
+                        modifiers.addChildWithTokens(modInternal);
</pre><pre class="diff" id="context">                 }
                return modifiers;
        }
</pre></div>
<hr /><a name="file4" /><div class="file">
<span class="pathname">metaas/trunk/src/test/java/uk/co/badgersinfoil/metaas</span><br />
<div class="fileheader"><big><b>ASMethodTests.java</b></big> <small id="info">490 -> 491</small></div>
<pre class="diff"><small id="info">--- trunk/src/test/java/uk/co/badgersinfoil/metaas/ASMethodTests.java        2007-06-27 22:29:01 UTC (rev 490)
+++ trunk/src/test/java/uk/co/badgersinfoil/metaas/ASMethodTests.java        2007-06-27 22:58:48 UTC (rev 491)
@@ -99,6 +99,10 @@
</small></pre><pre class="diff" id="context">                 assertSame(Visibility.PUBLIC, meth.getVisibility());
                meth.setVisibility(Visibility.PRIVATE);
                assertSame(Visibility.PRIVATE, meth.getVisibility());
</pre><pre class="diff" id="added">+                meth.setVisibility(Visibility.PROTECTED);
+                assertSame(Visibility.PROTECTED, meth.getVisibility());
+                meth.setVisibility(Visibility.INTERNAL);
+                assertSame(Visibility.INTERNAL, meth.getVisibility());
</pre><pre class="diff" id="context">                 meth.setVisibility(Visibility.PUBLIC);
                assertSame(Visibility.PUBLIC, meth.getVisibility());
</pre><pre class="diff"><small id="info">@@ -115,6 +119,8 @@
</small></pre><pre class="diff" id="context">                 // squeeze out the last bit of code coverage,
                assertEquals("public", Visibility.PUBLIC.toString());
                assertEquals("private", Visibility.PRIVATE.toString());
</pre><pre class="diff" id="added">+                assertEquals("protected", Visibility.PROTECTED.toString());
+                assertEquals("internal", Visibility.INTERNAL.toString());
</pre><pre class="diff" id="context">                 assertEquals("[default]", Visibility.DEFAULT.toString());
        }
</pre></div>
<center><small><a href="http://www.badgers-in-foil.co.uk/projects/cvsspam/" title="commit -> email">CVSspam</a> 0.2.12</small></center>
</body></html>