-
Notifications
You must be signed in to change notification settings - Fork 99
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Location.none has been changed to match the compiler's Location.none as of OCaml 4.08. This has been stable for some time. We also provide a Location.is_none which checks if a location is equal to Location.none for all versions of the compiler we currently support (i.e. >= 4.04). The decision to change Location.none has been made to enable the code to be simplified if we decide to change the lower bound of ppxlib to 4.08 in the future. Location.is_none has been used to fix loc_of_attribute which would sometimes miss attributes with none locations (like compiler inserted ocaml.doc attributes). Signed-off-by: Patrick Ferris <patrick@sirref.org>
- Loading branch information
1 parent
f15df48
commit 2a158e9
Showing
8 changed files
with
150 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
(executable | ||
(name pp) | ||
(libraries ppxlib)) | ||
|
||
(cram | ||
(applies_to print_attr_loc) | ||
(deps pp.exe)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
open Ppxlib | ||
|
||
let pp_attr str = | ||
let iter = | ||
object | ||
inherit Ast_traverse.iter as super | ||
|
||
method! attribute v = | ||
let loc = loc_of_attribute v in | ||
Format.printf "%a %s" Location.print loc v.attr_name.txt; | ||
super#attribute v | ||
end | ||
in | ||
iter#structure str; | ||
str | ||
|
||
let () = Driver.register_transformation ~impl:pp_attr "print-attributes" | ||
let () = Ppxlib.Driver.standalone () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
The compiler inserts documentation comments with their location set to | ||
`Location.none`. The value for `Location.none` has changed in the compiler (at | ||
4.08.0). We provide a function, `loc_of_attribute` to handle deriving better location | ||
errors for attributes with a none location. | ||
|
||
$ cat > test.ml << EOF | ||
> let v = 1 | ||
> (** A documentation comment! *) | ||
> EOF | ||
|
||
We run an identity driver that prints the locations of attributes. | ||
|
||
$ ./pp.exe --impl test.ml -o ignore.ml | ||
File "test.ml", line 2, characters 0-31: ocaml.doc | ||
|
Oops, something went wrong.