Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
a2d1b8a
ParseXS: improve else with no matching if err msg
iabyn Dec 24, 2025
2791fde
ParseXS: improve err msg: Unterminated '#if/...
iabyn Dec 24, 2025
a5531c0
ParseXS: add Utilities::deathHint() method
iabyn Dec 24, 2025
01cec25
ParseXS: improve 'not indented' err message
iabyn Dec 24, 2025
3371907
ParseXS: improve err msg: Didn't find a MODULE ...
iabyn Dec 24, 2025
33eca38
parseXS: fix warning on unparseable params
iabyn Dec 24, 2025
86f9c5a
ParseXS: avoid spurious CASE error msgs
iabyn Dec 24, 2025
a149c51
ParseXS: improve 'definition too short' err msg
iabyn Dec 24, 2025
291fb27
ParseXS: add error check for ALIAS and INTERFACE
iabyn Dec 24, 2025
31f555d
ParseXS: detect duplicate INTERFACE names
iabyn Dec 24, 2025
7c0a07f
ParseXS: test and reword 'length with default' err
iabyn Dec 24, 2025
fa021fe
ParseXS: add basic tests for param default values
iabyn Dec 24, 2025
ebf04ae
ParseXS: detect missing param default expression
iabyn Dec 24, 2025
077d73b
ParseXS:t/001-basic.t : add support for TODO tests
iabyn Dec 26, 2025
60c7a1f
ParseXS: 001-basic.t: consolidate INPUT tests
iabyn Dec 26, 2025
83fe144
ParseXS: add 'missing initialiser value' error
iabyn Dec 29, 2025
eb8d1ba
ParseXS: add tests for 'misplaced FOO:' error
iabyn Dec 29, 2025
a930512
ParseXS: warn on junk following a CODEish keyword
iabyn Dec 29, 2025
411426e
ParseXS: OVERLOAD: simplify regex
iabyn Dec 29, 2025
eb655b7
ParseXS: warn on duplicate OVERLOAD entries
iabyn Dec 29, 2025
5583cd8
ParseXS: refactor: split OVERLOAD args
iabyn Dec 29, 2025
a0814bc
ParseXS: ban ALIAS: 0
iabyn Dec 29, 2025
63e459b
ParseXS: detect OUTPUT: SETMAGIC: bad arg values
iabyn Dec 29, 2025
de3cd90
ParseXS: 001-basic.t: fix comment typos
iabyn Dec 29, 2025
2dff822
ParseXS: add more function pointer type tests
iabyn Dec 29, 2025
ed1d7bf
ParseXS: add FALLBACK tests and fix error call
iabyn Dec 29, 2025
28bc8f1
ParseXS: add tests for REQUIRE and improve err msg
iabyn Dec 29, 2025
7a81e2d
ParseXS: reword bad EN/DISABLE err msg
iabyn Dec 29, 2025
3b21a9c
ParseXS: tidy up INCLUDE error messages
iabyn Dec 30, 2025
6a32364
ParseXS: add basic tests for INCLUDE(_COMMAND)
iabyn Dec 30, 2025
59e34d5
ParseXS: no stderr noise on empty INCLUDE
iabyn Dec 30, 2025
391b73d
ParseXS: regularise INCLUDE pipe error handling
iabyn Dec 30, 2025
ddad958
ParseXS: add tests for BOOT and TYPEMAP keywords
iabyn Dec 30, 2025
dd4ccea
ParseXS: add basic tests for PREINIT keyword
iabyn Dec 30, 2025
405c407
ParseXS: add some basic tests for INTERFACE_MACRO
iabyn Dec 30, 2025
4b7accf
ParseXS: test INTERFACE name mangling
iabyn Dec 30, 2025
22a8b4d
ParseXS: don't skip death() test
iabyn Dec 30, 2025
dd863ce
PaeseXS: warn on duplicate FALLBACK
iabyn Dec 30, 2025
63f9e8c
ParseXS: doc test for TYPEMAP after XSUB
iabyn Dec 30, 2025
384b05d
ParseXS: be stricter on REQUIRE arg
iabyn Dec 30, 2025
be9910a
ParseXS: refactor: don't set $_ in Param::parse()
iabyn Dec 31, 2025
b77d6d2
ParseXS: ban length(s) without a type
iabyn Dec 30, 2025
ebc6051
ParseXS: tweak param-parsing code
iabyn Dec 31, 2025
bf40d63
ParseXS: reindent block following previous commit
iabyn Dec 31, 2025
e80a9c6
PasrseXS: ban IN_OUT etc modifiers with length(s)
iabyn Dec 31, 2025
9f92784
ParseXS: length() tests: add type
iabyn Dec 31, 2025
0c7972c
ParseXS: test for length(s) = NO_INIT
iabyn Dec 31, 2025
f3419c2
ParseXS: ban length() on placeholder param
iabyn Dec 31, 2025
de7b66d
ParseXS: move length() default var check earlier
iabyn Dec 31, 2025
591da0b
ParseXS: ban OUT* params with length()
iabyn Dec 31, 2025
8ac62b5
ParseXS: refactor: simplify {is_ansi} field
iabyn Dec 31, 2025
0c84c78
ParseXS: rename has_length field to length_param
iabyn Jan 1, 2026
fc3929c
ParseXS: reorganise length param code generation
iabyn Jan 1, 2026
2689e76
ParseXS: simplify XSauto length() param handling
iabyn Jan 1, 2026
7f10358
ParseXS: add test for alien length type
iabyn Jan 1, 2026
3da170f
ParseXS: better handle non-T_PV length(s) params
iabyn Jan 1, 2026
a368900
ParseXS: refactor: 001-basic.t: add flags
iabyn Jan 2, 2026
a370443
ParseXS: refactor: 001-basic.t: add TODO flag
iabyn Jan 2, 2026
1682146
ParseXS: 001-basic.t: add 'use warnings'
iabyn Jan 2, 2026
38b2787
ParseXS: 001-basic.t: simplify test API
iabyn Jan 2, 2026
180914e
ParseXS: 001-basic.t: modernise default test
iabyn Jan 4, 2026
449356b
ParseXS: 001-basic.t: add basic type tests
iabyn Jan 5, 2026
53ec56f
ParseXS: 001-basic.t: add tests for OUT with INPUT
iabyn Jan 5, 2026
41cd30e
ParseXS: 001-basic.t: modernise usage test
iabyn Jan 5, 2026
68e4744
ParseXS: 001-basic.t: add more ellipsis tests
iabyn Jan 5, 2026
56463c1
ParseXS: t/001-basic.t: modernise C++ test
iabyn Jan 5, 2026
05ca4d7
ParseXS: delete t/XSNoMap.xs
iabyn Jan 5, 2026
d14baaf
ParseXS: 001-basic.t: improve test_many()
iabyn Jan 5, 2026
15c7633
ParseXS: t/001-basic.t: modernise -nofoo tests
iabyn Jan 5, 2026
686c0a3
ParseXS: t/001-basic.t: modernise input ref test
iabyn Jan 5, 2026
ad04371
ParseXS: delete t/XSAlias.xs
iabyn Jan 5, 2026
dd6ffe0
ParseXS: delete t/XSTightDirectives.xs
iabyn Jan 5, 2026
5bd3859
ParseXS: delete t/XSFalsePositive*.xs
iabyn Jan 5, 2026
e08112a
ParseXS: delete t/XSBroken.xs
iabyn Jan 5, 2026
46bc80d
ParseXS: delete t/115-avoid-noise.t, t/XSWarn.xs
iabyn Jan 5, 2026
9d5739b
ParseXS: add 301-run-basic.t
iabyn Jan 5, 2026
dca1fc8
ParseXS: rename t/002-more.t to t/302-run-more.t
iabyn Jan 5, 2026
240bd65
ParseXS: rename t/003-usage.t to t/303-run-usage.t
iabyn Jan 5, 2026
3698d16
ParseXS: add top comments to new 3xx-run-foo files
iabyn Jan 5, 2026
2e0826d
ParseXS: add t/000-version.t
iabyn Jan 5, 2026
9ae13a9
ParseXS: add t/lib/TestMany.pm
iabyn Jan 5, 2026
f0b2cbb
ParseXS: add t/002-parse-file-scope.t
iabyn Jan 5, 2026
901841c
ParseXS: add t/003-parse-file-scope-keywords.t
iabyn Jan 5, 2026
3cb0ac6
ParseXS: add t/004-parse-xsub-declaration.t
iabyn Jan 5, 2026
b6e81de
ParseXS: add t/005-parse-parameters.t
iabyn Jan 5, 2026
7beafe6
ParseXS: add t/006-parse-return-type.t
iabyn Jan 5, 2026
2f0509e
ParseXS: add t/007-parse-input-output.t
iabyn Jan 5, 2026
5bc8dcf
ParseXS: add t/008-parse-xsub-keywords.t
iabyn Jan 5, 2026
248c787
ParseXS: add t/009-parse-c-plusplus.t
iabyn Jan 5, 2026
7da0855
ParseXS: rename t/001-basic.t t/001-parse-basic.t
iabyn Jan 5, 2026
0c07d1c
ParseXS: t/001-parse-basic.t: add std comments
iabyn Jan 5, 2026
322aebb
ParseXS: delete t/pseudotypemap1
iabyn Jan 5, 2026
08935f4
ParseXS: delete t/108-map_type.t
iabyn Jan 5, 2026
76a25b1
ParseXS: delete t/112-set_cond.t
iabyn Jan 5, 2026
4f736bc
ParseXS: rename t/1xx-*.t to t/1xx-api-*.t
iabyn Jan 5, 2026
2d2304d
ParseXS: add comments at the top of all t/1xx*.t
iabyn Jan 5, 2026
bc6b837
ParseXS: rename t/5xx-t-*.t to t/5xx-typemaps-*.t
iabyn Jan 5, 2026
5ad4fdb
ParseXS: add comment at the top of all t/5xx*.t
iabyn Jan 5, 2026
f430b42
ParseXS: rename t/data/ to t/test_typemaps
iabyn Jan 5, 2026
f8084a0
ParseXS: 004-parse-xsub-declaration.t: fix for 589
iabyn Jan 6, 2026
db99710
ParseXS: enable + fix warnings in CountLines.pm
iabyn Jan 7, 2026
7af02c8
ParseXS: update Changes
iabyn Jan 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 41 additions & 40 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -4201,57 +4201,58 @@ dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp External subroutine preprocessor
dist/ExtUtils-ParseXS/lib/perlxs.pod Perl XS application programming interface
dist/ExtUtils-ParseXS/lib/perlxstut.pod Perl XS tutorial
dist/ExtUtils-ParseXS/lib/perlxstypemap.pod Perl XS C/Perl type conversion tools
dist/ExtUtils-ParseXS/t/001-basic.t See if ExtUtils::ParseXS works
dist/ExtUtils-ParseXS/t/002-more.t Extended ExtUtils::ParseXS testing
dist/ExtUtils-ParseXS/t/003-usage.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/102-trim_whitespace.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/103-tidy_type.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/104-map_type.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/105-valid_proto_string.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/106-process_typemaps.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/108-map_type.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/112-set_cond.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/115-avoid-noise.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/501-t-compile.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/510-t-bare.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/511-t-whitespace.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/512-t-file.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/513-t-merge.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/514-t-embed.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/515-t-cmd.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/516-t-clone.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/517-t-targetable.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/600-t-compat.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/data/b.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/combined.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/confl_repl.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/confl_skip.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/conflicting.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/other.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/perl.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/data/simple.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/000-version.t See if ExtUtils::ParseXS loads and has the right version num
dist/ExtUtils-ParseXS/t/001-parse-basic.t See if ExtUtils::ParseXS basic parsing works
dist/ExtUtils-ParseXS/t/002-parse-file-scope.t test ExtUtils::ParseXS file-scoped syntax
dist/ExtUtils-ParseXS/t/003-parse-file-scope-keywords.t test ExtUtils::ParseXS file-scoped keywords syntax
dist/ExtUtils-ParseXS/t/004-parse-xsub-declaration.t test ExtUtils::ParseXS XSUB declaration syntax
dist/ExtUtils-ParseXS/t/005-parse-parameters.t test ExtUtils::ParseXS XSUB parameter syntax
dist/ExtUtils-ParseXS/t/006-parse-return-type.t test ExtUtils::ParseXS XSUB return type
dist/ExtUtils-ParseXS/t/007-parse-input-output.t test ExtUtils::ParseXS XSUB INPUT and OUTPUT keywords
dist/ExtUtils-ParseXS/t/008-parse-xsub-keywords.t test ExtUtils::ParseXS XSUB keywords
dist/ExtUtils-ParseXS/t/009-parse-c-plusplus.t test ExtUtils::ParseXS C++ support
dist/ExtUtils-ParseXS/t/101-api-standard_typemap_locations.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/102-api-trim_whitespace.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/103-api-tidy_type.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/104-api-map_type.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/105-api-valid_proto_string.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/106-api-process_typemaps.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/113-api-check_cond_preproc_statements.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/114-api-blurt_death_Warn.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/301-run-basic.t See if ExtUtils::ParseXS can compile and run a file
dist/ExtUtils-ParseXS/t/302-run-more.t Extended ExtUtils::ParseXS compile and run
dist/ExtUtils-ParseXS/t/303-run-usage.t ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/501-typemaps-compile.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/510-typemaps-bare.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/511-typemaps-whitespace.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/512-typemaps-file.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/513-typemaps-merge.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/514-typemaps-embed.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/515-typemaps-cmd.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/516-typemaps-clone.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/517-typemaps-targetable.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/518-typemaps-compat.t ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/Test.pm ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm ExtUtils::ParseXS testing utility
dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm Primitive STDOUT/ERR capturing for tests
dist/ExtUtils-ParseXS/t/lib/TestMany.pm Tool for running XS parser tests
dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm ExtUtils::Typemaps tests
dist/ExtUtils-ParseXS/t/pseudotypemap1 A test-typemap
dist/ExtUtils-ParseXS/t/test_typemaps/b.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/combined.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/confl_repl.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/confl_skip.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/conflicting.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/other.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/perl.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/test_typemaps/simple.typemap ExtUtils::Typemaps test data
dist/ExtUtils-ParseXS/t/typemap Standard typemap for controlled testing
dist/ExtUtils-ParseXS/t/XSAlias.xs Test file for ExtUtils::ParseXS ALIAS tests
dist/ExtUtils-ParseXS/t/XSBroken.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSFalsePositive.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSFalsePositive2.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSInclude.xsh Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSloop.xsh Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSMore.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSNoMap.xs
dist/ExtUtils-ParseXS/t/XSTest.pm Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSTest.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSTightDirectives.xs Test file for ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSUsage.pm ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSUsage.xs ExtUtils::ParseXS tests
dist/ExtUtils-ParseXS/t/XSWarn.xs ExtUtils::ParseXS tests
dist/Filter-Simple/Changes History of change for Filter::Simple
dist/Filter-Simple/lib/Filter/Simple.pm Simple frontend to Filter::Util::Call
dist/Filter-Simple/Makefile.PL Build Filter::Simple
Expand Down
16 changes: 14 additions & 2 deletions dist/ExtUtils-ParseXS/Changes
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
Revision history for Perl extension ExtUtils::ParseXS.

3.60
3.62
- allow 'length(foo)' to work with any 'foo' type that has
'SvPV_nolen()' or similar in its typemap, not just that it maps
to T_PV
- improve warning and error messages
- improve test coverage
- reorganise t/

3.61 Fri Jan 9 2026
- rewrite perlxs.pod
- finish refactoring to use an Abstract Syntax Tree (AST) internally

3.60 Fri Sep 26 2025
- Fix INTERFACE for C23
- support perl package names in INTERFACE
- Cleanup typemap file-finding code and change priority
- Revert throwing an exception when combining the length operator
with a typemap other than T_PV

3.59
3.59 Fri Sep 5 2025
- Throw an exception when combining the length operator with a
typemap other than T_PV

Expand Down
1 change: 1 addition & 0 deletions dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ use ExtUtils::ParseXS::Utilities qw(
current_line_number
blurt
death
deathHint
escape_file_for_line_directive
report_typemap_failure
);
Expand Down
15 changes: 14 additions & 1 deletion dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
package ExtUtils::ParseXS::CountLines;

# Private helper module. It is used to tie a file handle, and
# whenever lines are written to it, lines which match the
#
# ExtUtils::ParseXS::CountLines->end_marker()
#
# token are replaced with:
#
# #line NNN file.c
#
# where NNN is the count of lines written so far.

use strict;
use warnings;

our $VERSION = '3.62';

Expand Down Expand Up @@ -40,7 +53,7 @@ sub PRINTF {
sub DESTROY {
# Not necessary if we're careful to end with a "\n"
my $self = shift;
print {$self->{fh}} $self->{buffer};
print {$self->{fh}} $self->{buffer} if length $self->{buffer};
}

sub UNTIE {
Expand Down
Loading
Loading