summaryrefslogtreecommitdiff
path: root/sources/scalac/typechecker/DeSugarize.java
diff options
context:
space:
mode:
authorcremet <cremet@epfl.ch>2003-07-30 08:27:43 +0000
committercremet <cremet@epfl.ch>2003-07-30 08:27:43 +0000
commit90b4108f4586d850a63f40ce2624527a7a270b97 (patch)
treef9f5d7918399752dd4a41dc366fb9054f6a40881 /sources/scalac/typechecker/DeSugarize.java
parent3016ae3a598a964690e12ccd2b1de2e8f7cd7a63 (diff)
downloadscala-90b4108f4586d850a63f40ce2624527a7a270b97.tar.gz
scala-90b4108f4586d850a63f40ce2624527a7a270b97.tar.bz2
scala-90b4108f4586d850a63f40ce2624527a7a270b97.zip
Added:
- collecting of documentation comments. - options for scaladoc - a class to load a documentation module.
Diffstat (limited to 'sources/scalac/typechecker/DeSugarize.java')
-rw-r--r--sources/scalac/typechecker/DeSugarize.java31
1 files changed, 21 insertions, 10 deletions
diff --git a/sources/scalac/typechecker/DeSugarize.java b/sources/scalac/typechecker/DeSugarize.java
index b8539a9fa4..e5634390e4 100644
--- a/sources/scalac/typechecker/DeSugarize.java
+++ b/sources/scalac/typechecker/DeSugarize.java
@@ -394,6 +394,17 @@ public class DeSugarize implements Kinds, Modifiers {
}
}
+ /** make a set of trees share the same documentation comment as a
+ * given tree (used for pattern and val definitions)
+ */
+ Tree[] shareComment(Tree[] trees, Tree tree) {
+ String comment = (String) global.mapTreeComment.get(tree);
+ if (comment != null)
+ for(int i = 0; i < trees.length; i++)
+ global.mapTreeComment.put(trees[i], comment);
+ return trees;
+ }
+
/** expand pattern definitions and variable definitions in templates.
*/
public Tree[] Statements(Tree[] stats, boolean isLocal) {
@@ -458,13 +469,13 @@ public class DeSugarize implements Kinds, Modifiers {
case PatDef(int mods, Ident(Name name), Tree rhs):
// val x = e ==> val x = e
- return new Tree[]{
- make.ValDef(tree.pos, mods, name, Tree.Empty, rhs)};
+ return shareComment(new Tree[]{
+ make.ValDef(tree.pos, mods, name, Tree.Empty, rhs)}, tree);
case PatDef(int mods, Typed(Ident(Name name), Tree type), Tree rhs):
// val x: T = e ==> val x: T = e
- return new Tree[]{
- make.ValDef(tree.pos, mods, name, type, rhs)};
+ return shareComment(new Tree[]{
+ make.ValDef(tree.pos, mods, name, type, rhs)}, tree);
case PatDef(int mods, Tree pat, Tree rhs):
int pos = tree.pos;
@@ -494,7 +505,7 @@ public class DeSugarize implements Kinds, Modifiers {
// val x_1 = e.match (case p => x_1)
Tree valdef = make.ValDef(pos, mods, vars[0], Tree.Empty, match);
print(pat, "patdef", valdef);
- return new Tree[]{valdef};
+ return shareComment(new Tree[]{valdef}, tree);
} else {
// t$
Name var = getvar();
@@ -510,7 +521,7 @@ public class DeSugarize implements Kinds, Modifiers {
make.Select(pos, make.Ident(pos, var), tupleSelectorName(i + 1)));
}
print(pat, "patdef", new Block(res));//debug
- return res;
+ return shareComment(res, tree);
}
default:
throw new ApplicationError("pattern definition expected", tree);
@@ -533,8 +544,8 @@ public class DeSugarize implements Kinds, Modifiers {
((mods & DEFERRED) != 0) ? Tree.Empty
: make.Ident(tree.pos, valname));
if ((mods1 & MUTABLE) == 0) {
- if ((mods1 & DEFERRED) != 0) return new Tree[]{getter};
- else return new Tree[]{valdef1, getter};
+ if ((mods1 & DEFERRED) != 0) return shareComment(new Tree[]{getter}, tree);
+ else return shareComment(new Tree[]{valdef1, getter}, tree);
} else {
Tree setter = make.DefDef(
tree.pos, mods1, setterName(name),
@@ -548,8 +559,8 @@ public class DeSugarize implements Kinds, Modifiers {
tree.pos,
make.Ident(tree.pos, valname),
make.Ident(tree.pos, parameterName(0))));
- if ((mods1 & DEFERRED) != 0) return new Tree[]{getter, setter};
- else return new Tree[]{valdef1, getter, setter};
+ if ((mods1 & DEFERRED) != 0) return shareComment(new Tree[]{getter, setter}, tree);
+ else return shareComment(new Tree[]{valdef1, getter, setter}, tree);
}
default:
throw new ApplicationError();