summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/FreshVariableTraverser.java
blob: 7010aae5da6118c4fc38c1886db97d6391b8cd88 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package scalac.transformer.matching ;

import scalac.ast.Traverser ;

import scalac.ast.Tree;
import Tree.Ident;
import Tree.Bind;

import scalac.util.Name;
import scalac.util.FreshNameCreator ;

import scalac.symtab.* ;

import java.util.HashMap;
import java.util.Vector;

class FreshVariableTraverser extends VariableTraverser {

      int    pos;
      Symbol owner;
      FreshNameCreator fresh;

      public HashMap helpMap ;

      public FreshVariableTraverser( int pos,
                                     Symbol owner,
                                     FreshNameCreator fresh) {
            this.pos   = pos;
            this.owner = owner;
            this.fresh = fresh;

            helpMap  =  new HashMap();
      }

      void handleVariableSymbol( Symbol sym ) {
            Symbol helpVar = new TermSymbol( pos,
                                             fresh.newName( sym.name
                                                            .toString() ),
                                             owner,
                                             0)
                  .setType( sym.type() );

            helpMap.put( sym, helpVar );
      }

}