@@ -11,6 +11,7 @@ var ToNoder = &native.ObjectToNoder{
1111 EndLineKey : "end_lineno" ,
1212 ColumnKey : "col_offset" ,
1313 EndColumnKey : "end_col_offset" ,
14+ PositionFill : native .OffsetFromLineCol ,
1415
1516 TokenKeys : map [string ]bool {
1617 "name" : true ,
@@ -78,26 +79,25 @@ var ToNoder = &native.ObjectToNoder{
7879 // FIXME: test[ast_type=Compare].comparators is a list?? (should be "right")
7980}
8081
81- func transformationParser (opts driver.ParserOptions ) (tr driver.Parser , err error ) {
82- parser , err := native .ExecParser (ToNoder , opts .NativeBin )
82+ // ParserBuilder creates a parser that transform source code files into *uast.Node.
83+ func ParserBuilder (opts driver.ParserOptions ) (parser driver.Parser , err error ) {
84+ parser , err = native .ExecParser (ToNoder , opts .NativeBin )
8385 if err != nil {
84- return tr , err
85- }
86-
87- tr = & driver.TransformationParser {
88- Parser : parser ,
89- Transformation : driver .FillOffsetFromLineCol ,
86+ return
9087 }
9188
92- return tr , nil
93- }
94-
95- // ParserBuilder creates a parser that transform source code files into *uast.Node.
96- func ParserBuilder (opts driver.ParserOptions ) (driver.Parser , error ) {
97- parser , err := transformationParser (opts )
98- if err != nil {
99- return nil , err
89+ switch ToNoder .PositionFill {
90+ case native .OffsetFromLineCol :
91+ parser = & driver.TransformationParser {
92+ Parser : parser ,
93+ Transformation : driver .FillOffsetFromLineCol ,
94+ }
95+ case native .LineColFromOffset :
96+ parser = & driver.TransformationParser {
97+ Parser : parser ,
98+ Transformation : driver .FillLineColFromOffset ,
99+ }
100100 }
101101
102- return parser , nil
102+ return
103103}
0 commit comments