Skip to content

Commit 6633f93

Browse files
authored
Merge pull request #1314 from well-typed/dom/1155/duplicate-declarations
Do not panic on duplicate declarations in decl-index
2 parents 67c7967 + 517e1b0 commit 6633f93

File tree

37 files changed

+691
-504
lines changed

37 files changed

+691
-504
lines changed

dev/select-pass.excalidraw

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -457,13 +457,13 @@
457457
"updated": 1763179304934,
458458
"link": null,
459459
"locked": false,
460-
"text": "getTransitiveAvailability",
460+
"text": "getTransitiveSelectability",
461461
"fontSize": 20,
462462
"fontFamily": 5,
463463
"textAlign": "center",
464464
"verticalAlign": "middle",
465465
"containerId": "2X3A6sCqYbvEBrGYPPdcT",
466-
"originalText": "getTransitiveAvailability",
466+
"originalText": "getTransitiveSelectability",
467467
"autoResize": true,
468468
"lineHeight": 1.25
469469
},
@@ -1748,4 +1748,4 @@
17481748
"lockedMultiSelections": {}
17491749
},
17501750
"files": {}
1751-
}
1751+
}

examples/libpcap/generate-and-run.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export PROJECT_ROOT
1111
echo "# Building libpcap"
1212
echo "# "
1313

14+
rm -rfv libpcap*
1415
wget https://www.tcpdump.org/release/libpcap-1.10.5.tar.xz
1516
tar -xf libpcap-1.10.5.tar.xz
1617
mv libpcap-1.10.5 libpcap

examples/libpcap/generate.sh

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,15 @@ libclang_flags=(
2626
# the declarations into an `hs-bindgen`-internal abstract syntax tree. These
2727
# flags affect the parsing/reifying step.
2828
parse_flags=(
29-
# TODO: We panic without `--parse-all`, see
30-
# https://github.com/well-typed/hs-bindgen/issues/1155.
31-
--parse-all
29+
# The external binding specifications we provide for the C standard library
30+
# do not cover all definitions. We instruct `hs-bindgen` to parse additional
31+
# headers.
32+
--parse-by-header-path "struct_timeval.h"
33+
--parse-by-header-path "socket.h"
34+
# By default `hs-bindgen` parses all headers in the main header directory,
35+
# but we adjust the parse predicate above, and so need to provide this
36+
# option.
37+
--parse-from-main-header-dirs
3238
)
3339

3440
# We only generate bindings for a sub-set of all parsed/reified declarations.
@@ -56,9 +62,8 @@ select_flags=(
5662
# For example, activate Info-level log messages to see which declarations are
5763
# selected/not selected, or which C macros we succeed or fail to parse.
5864
debug_flags=(
59-
# # Run `hs-bindgen` with log level "Info".
65+
# # Run `hs-bindgen` with log level "Info" or "Debug".
6066
# -v3
61-
# # Run `hs-bindgen` with log level "Debug".
6267
# -v4
6368
)
6469

hs-bindgen/examples/golden/declarations/select_scoping.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// select!
33
#include "select_scoping_header.h"
44

5-
65
// This declaration is parsed _and_ selected.
76
typedef int ParsedAndSelected1;
87

@@ -12,4 +11,4 @@ typedef ParsedAndNotSelected ParsedAndSelected2;
1211

1312
// This declaration is parsed _and_ selected. The dependency is _not_ parsed nor
1413
// selected (custom parse predicate).
15-
typedef struct PossiblyNotParsedDefinitelyNotSelected ParsedAndSelected3;
14+
typedef struct ParseNotAttemptedNotSelected ParsedAndSelected3;

hs-bindgen/examples/golden/declarations/select_scoping_header.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ typedef int ParsedAndNotSelected;
44

55
// This declaration is _not_ parsed by the test, which uses a custom parse
66
// predicate.
7-
struct PossiblyNotParsedDefinitelyNotSelected {
7+
struct ParseNotAttemptedNotSelected {
88
int x;
99
};
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include "duplicate_macro.h"
2+
3+
void function(duplicate x);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
typedef int duplicate;
2+
#define duplicate duplicate

hs-bindgen/fixtures/declarations/select_scoping/Example.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import Prelude (Bounded, Enum, Eq, Integral, Num, Ord, Read, Real, Show)
2626

2727
{-| __C declaration:__ @ParsedAndSelected1@
2828
29-
__defined at:__ @declarations\/select_scoping.h:7:13@
29+
__defined at:__ @declarations\/select_scoping.h:6:13@
3030
3131
__exported by:__ @declarations\/select_scoping.h@
3232
-}

hs-bindgen/fixtures/declarations/select_scoping/th.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
-- addDependentFile examples/golden/declarations/select_scoping.h
33
{-| __C declaration:__ @ParsedAndSelected1@
44

5-
__defined at:__ @declarations\/select_scoping.h:7:13@
5+
__defined at:__ @declarations\/select_scoping.h:6:13@
66

77
__exported by:__ @declarations\/select_scoping.h@
88
-}
99
newtype ParsedAndSelected1
1010
= ParsedAndSelected1 {un_ParsedAndSelected1 :: CInt}
1111
{- ^ __C declaration:__ @ParsedAndSelected1@
1212

13-
__defined at:__ @declarations\/select_scoping.h:7:13@
13+
__defined at:__ @declarations\/select_scoping.h:6:13@
1414

1515
__exported by:__ @declarations\/select_scoping.h@
1616
-}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module Example () where

0 commit comments

Comments
 (0)