Преглед изворни кода

omit dollar sign position for fake ident expr for FIdent case, also Display.ExprPreprocessing.process_expr doesn't seem to be required anymore when map_expr supports FIdents

Dan Korostelev пре 8 година
родитељ
комит
69158305cb
2 измењених фајлова са 3 додато и 9 уклоњено
  1. 2 1
      src/syntax/ast.ml
  2. 1 8
      src/typing/typer.ml

+ 2 - 1
src/syntax/ast.ml

@@ -600,7 +600,8 @@ let map_expr loop (e,p) =
 			match fst p with
 			| FmtRaw _ -> p
 			| FmtIdent i ->
-				let fake_expr = (EConst (Ident i),snd p) in
+				let pos = snd p in
+				let fake_expr = (EConst (Ident i),{pos with pmin = pos.pmin + 1 (* omit dollar sign *)}) in
 				let new_expr = loop fake_expr in
 				if new_expr == fake_expr then
 					p

+ 1 - 8
src/typing/typer.ml

@@ -3229,14 +3229,7 @@ and type_expr ctx (e,p) (with_type:with_type) =
 		let t = Typeload.load_core_type ctx "EReg" in
 		mk (TNew ((match t with TInst (c,[]) -> c | _ -> assert false),[],[str;opt])) t p
 	| EFormat parts ->
-		let econcat = Expr.format_string parts p in
-		let econcat =
-			if ctx.in_display && Display.is_display_position p then
-				Display.ExprPreprocessing.process_expr ctx.com econcat
-			else
-				econcat
-		in
-		type_expr ctx econcat with_type
+		type_expr ctx (Expr.format_string parts p) with_type
 	| EConst c ->
 		Codegen.type_constant ctx.com c p
 	| EBinop (op,e1,e2) ->