This is an automated email from the ASF dual-hosted git repository. bneradt pushed a commit to branch 11-Dev in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 4b3786fe43af2f9f450d07dd48eca699fc8041f9 Merge: 90f8301a8d a399830955 Author: Brian Neradt <[email protected]> AuthorDate: Tue Nov 25 22:52:02 2025 +0000 Merge latest master into 11-Dev No conflicts. .claude/CLAUDE.md | 289 ++++++ .cursor/rules/writing-autests.mdc | 319 +------ .gitignore | 2 + .vscode/settings.json | 6 + CMakeLists.txt | 27 +- CONTRIBUTING.md | 11 +- README.md | 2 - ci/jenkins/bin/clang-format.sh | 9 +- cmake/proxy-verifier.cmake | 25 +- configs/records.yaml.default.in | 1 + configs/strategies.schema.json | 23 + doc/.gitignore | 1 + doc/CMakeLists.txt | 67 +- doc/README.md | 26 +- doc/admin-guide/configuration/hrw4u.en.rst | 55 +- doc/admin-guide/files/parent.config.en.rst | 62 ++ doc/admin-guide/files/records.yaml.en.rst | 82 ++ doc/admin-guide/files/strategies.yaml.en.rst | 56 ++ doc/admin-guide/graceful-shutdown.en.rst | 173 ++++ doc/admin-guide/index.en.rst | 1 + doc/admin-guide/layer-4-routing.en.rst | 12 +- .../monitoring/statistics/core/cache-volume.en.rst | 19 + .../monitoring/statistics/core/cache.en.rst | 23 + doc/admin-guide/plugins/cachekey.en.rst | 363 ++++++-- doc/admin-guide/plugins/cookie_remap.en.rst | 44 + doc/admin-guide/plugins/header_rewrite.en.rst | 288 ++++-- doc/admin-guide/plugins/index.en.rst | 5 +- doc/admin-guide/plugins/lua.en.rst | 228 ++++- doc/admin-guide/plugins/memory_profile.en.rst | 8 +- doc/admin-guide/plugins/regex_remap.en.rst | 20 +- .../tools/converting-records-to-yaml.en.rst | 1 - doc/appendices/command-line/traffic_ctl.en.rst | 69 +- doc/conf.cmake.in.py | 196 ++-- doc/conf.py | 500 ----------- .../functions/TSHttpNextHopStrategyNameGet.en.rst | 49 + .../TSHttpTxnNextHopNamedStrategyGet.en.rst | 52 ++ .../functions/TSHttpTxnNextHopStrategyGet.en.rst | 49 + .../functions/TSHttpTxnNextHopStrategySet.en.rst | 56 ++ .../api/functions/TSUserArgs.en.rst | 3 +- .../cache-architecture/architecture.en.rst | 18 +- .../cache-architecture/cache-initialization.en.rst | 2 +- .../cache-architecture/images/span-header.png | Bin 0 -> 30938 bytes .../cache-architecture/images/stripe-header.png | Bin 0 -> 29497 bytes .../core-architecture/HostDB-Data-Layout.png | Bin 0 -> 30777 bytes doc/developer-guide/core-architecture/heap.en.rst | 6 +- .../core-architecture/hostdb.en.rst | 8 +- .../url_rewrite_architecture.en.rst | 2 +- doc/developer-guide/documentation/building.en.rst | 69 +- .../internal-libraries/AcidPtr.en.rst | 286 ------ .../internal-libraries/ArgParser.en.rst | 49 + .../internal-libraries/Extendible.en.rst | 329 ------- .../internal-libraries/index.en.rst | 2 - doc/developer-guide/jsonrpc/jsonrpc-api.en.rst | 4 +- .../jsonrpc/jsonrpc-handler-development.en.rst | 5 +- .../jsonrpc/traffic_ctl-development.en.rst | 3 +- .../plugins/example-plugins/tls_bridge.en.rst | 4 +- .../trafficserver-timers.en.rst | 10 +- doc/developer-guide/testing/autests.en.rst | 392 ++++++++ doc/developer-guide/testing/index.en.rst | 1 + doc/ext/local-config.cmake.in.py | 1 + doc/ext/traffic-server.py | 41 +- doc/index-latex.rst | 123 +++ doc/static/images/ATS_Leaf_Logo.png | Bin 0 -> 1315763 bytes doc/static/override.css | 49 +- include/iocore/eventsystem/EThread.h | 7 +- include/iocore/eventsystem/IOBuffer.h | 12 +- include/iocore/eventsystem/Watchdog.h | 70 ++ include/iocore/hostdb/HostDBProcessor.h | 38 +- include/iocore/net/ProxyProtocol.h | 58 +- .../mgmt/rpc/handlers/hostdb/HostDB.h | 21 +- include/proxy/ParentConsistentHash.h | 7 +- include/proxy/ParentSelection.h | 12 + include/proxy/http/HttpSM.h | 3 - include/proxy/http/HttpTransact.h | 14 +- include/proxy/http/remap/NextHopConsistentHash.h | 8 +- include/proxy/http/remap/NextHopStrategyFactory.h | 7 +- include/proxy/http/remap/UrlMapping.h | 6 +- include/records/RecCore.h | 6 +- include/records/RecProcess.h | 5 + include/ts/apidefs.h.in | 8 +- include/ts/ts.h | 61 ++ include/tscore/AcidPtr.h | 199 ---- include/tscore/ArgParser.h | 60 +- include/tscore/DiagsTypes.h | 2 +- include/tscore/Extendible.h | 776 ---------------- include/tscore/HashSip.h | 147 ++- include/tscore/Random.h | 18 +- include/tscore/Regression.h | 2 +- include/tscore/ink_config.h.cmake.in | 1 + include/tscore/ink_inet.h | 12 +- include/tsutil/Metrics.h | 36 + include/tsutil/Regex.h | 88 +- plugins/background_fetch/background_fetch.cc | 1 - plugins/cachekey/pattern.cc | 134 +-- plugins/cachekey/pattern.h | 25 +- plugins/cachekey/unit_tests/pattern_test.cc | 367 ++++++++ plugins/certifier/certifier.cc | 4 +- plugins/compress/CMakeLists.txt | 5 +- plugins/compress/brotli_compress.cc | 148 +++ .../compress/brotli_compress.h | 32 +- plugins/compress/compress.cc | 386 ++------ .../compress/compress_common.cc | 34 +- plugins/compress/compress_common.h | 76 ++ plugins/compress/configuration.cc | 365 ++++---- plugins/compress/configuration.h | 49 +- plugins/compress/gzip_compress.cc | 169 ++++ .../compress/gzip_compress.h | 37 +- plugins/compress/misc.cc | 22 - plugins/compress/misc.h | 64 -- plugins/esi/esi.cc | 4 +- plugins/esi/lib/EsiProcessor.cc | 2 + plugins/experimental/access_control/CMakeLists.txt | 2 +- plugins/experimental/access_control/pattern.cc | 101 +-- plugins/experimental/access_control/pattern.h | 17 +- .../experimental/cache_fill/background_fetch.cc | 1 - plugins/experimental/cookie_remap/CMakeLists.txt | 2 +- plugins/experimental/cookie_remap/cookie_remap.cc | 101 ++- plugins/experimental/geoip_acl/CMakeLists.txt | 1 - plugins/experimental/geoip_acl/acl.cc | 26 +- plugins/experimental/geoip_acl/acl.h | 39 +- plugins/experimental/maxmind_acl/CMakeLists.txt | 4 +- plugins/experimental/maxmind_acl/mmdb.cc | 23 +- plugins/experimental/maxmind_acl/mmdb.h | 9 +- plugins/experimental/realip/pp.cc | 3 +- .../experimental/stale_response/stale_response.cc | 1 - .../uri_signing/unit_tests/uri_signing_test.cc | 12 +- plugins/experimental/url_sig/CMakeLists.txt | 2 +- plugins/experimental/url_sig/url_sig.cc | 137 ++- plugins/experimental/wasm/ats_context.cc | 10 +- plugins/header_rewrite/CMakeLists.txt | 2 +- plugins/header_rewrite/conditions.cc | 19 +- plugins/header_rewrite/factory.cc | 5 + plugins/header_rewrite/header_rewrite.cc | 135 ++- plugins/header_rewrite/matcher.h | 7 +- plugins/header_rewrite/operator.h | 15 + plugins/header_rewrite/operators.cc | 220 ++++- plugins/header_rewrite/operators.h | 118 +++ plugins/header_rewrite/parser.cc | 7 + plugins/header_rewrite/parser.h | 14 +- plugins/header_rewrite/regex_helper.cc | 30 +- plugins/header_rewrite/regex_helper.h | 19 +- plugins/header_rewrite/resources.cc | 4 - plugins/header_rewrite/resources.h | 7 +- plugins/header_rewrite/ruleset.cc | 54 +- plugins/header_rewrite/ruleset.h | 151 +--- plugins/header_rewrite/statement.cc | 25 +- plugins/header_rewrite/statement.h | 23 +- plugins/lua/ts_lua_client_request.cc | 209 ++++- plugins/lua/ts_lua_http.cc | 68 ++ plugins/lua/ts_lua_http_config.cc | 16 +- plugins/lua/ts_lua_server_request.cc | 29 +- plugins/lua/ts_lua_vconn.cc | 10 +- plugins/origin_server_auth/aws_auth_v4.cc | 16 + plugins/prefetch/fetch.cc | 1 - plugins/prefetch/pattern.cc | 115 +-- plugins/prefetch/pattern.h | 15 +- plugins/regex_remap/CMakeLists.txt | 2 +- plugins/regex_remap/regex_remap.cc | 182 ++-- plugins/regex_revalidate/CMakeLists.txt | 1 - plugins/regex_revalidate/regex_revalidate.cc | 153 ++-- plugins/slice/Config.cc | 44 +- plugins/slice/Config.h | 17 +- src/api/InkAPI.cc | 53 ++ src/api/InkAPITest.cc | 55 +- src/iocore/cache/CacheProcessor.cc | 6 +- src/iocore/cache/CacheRead.cc | 4 + src/iocore/cache/CacheVC.cc | 10 +- src/iocore/cache/HttpTransactCache.cc | 6 +- src/iocore/cache/P_CacheStats.h | 3 + src/iocore/eventsystem/CMakeLists.txt | 1 + src/iocore/eventsystem/EventSystem.cc | 3 + src/iocore/eventsystem/P_IOBuffer.h | 4 + src/iocore/eventsystem/RecProcess.cc | 1 - src/iocore/eventsystem/RecRawStatsImpl.cc | 3 +- src/iocore/eventsystem/UnixEThread.cc | 68 +- src/iocore/eventsystem/UnixEventProcessor.cc | 50 +- src/iocore/eventsystem/Watchdog.cc | 104 +++ src/iocore/hostdb/HostDB.cc | 33 +- src/iocore/hostdb/P_RefCountCache.h | 88 +- src/iocore/hostdb/RefCountCache.cc | 14 - src/iocore/hostdb/test_RefCountCache.cc | 16 - src/iocore/net/P_SSLUtils.h | 4 +- src/iocore/net/ProxyProtocol.cc | 9 +- src/iocore/net/SSLStats.cc | 88 +- src/iocore/net/SSLStats.h | 8 +- src/iocore/net/TLSBasicSupport.cc | 58 +- src/iocore/net/unit_tests/test_ProxyProtocol.cc | 290 ++++++ src/mgmt/rpc/CMakeLists.txt | 1 + src/mgmt/rpc/handlers/config/Configuration.cc | 2 +- src/mgmt/rpc/handlers/hostdb/HostDB.cc | 175 ++++ src/mgmt/rpc/schema/hostdb_status_schema.json | 115 +++ src/proxy/CMakeLists.txt | 4 + src/proxy/ParentConsistentHash.cc | 48 +- src/proxy/ParentSelection.cc | 60 ++ src/proxy/hdrs/MIME.cc | 70 +- src/proxy/http/HttpSM.cc | 58 +- src/proxy/http/HttpTransact.cc | 117 +-- src/proxy/http/remap/NextHopConsistentHash.cc | 73 +- src/proxy/http/remap/NextHopStrategyFactory.cc | 28 +- src/proxy/http/remap/PluginFactory.cc | 14 +- src/proxy/http/remap/RemapConfig.cc | 2 +- src/proxy/http/remap/RemapProcessor.cc | 15 +- src/proxy/http/remap/UrlMappingPathIndex.cc | 2 +- src/proxy/http/remap/UrlRewrite.cc | 2 +- .../http/remap/unit-tests/nexthop_test_stubs.cc | 28 + .../remap_test_dlopen_leak_suppression.txt | 5 +- .../remap/unit-tests/test_NextHopConsistentHash.cc | 40 +- .../remap/unit-tests/test_NextHopRoundRobin.cc | 28 +- .../unit-tests/test_NextHopStrategyFactory.cc | 26 +- src/proxy/http2/HTTP2.cc | 2 +- src/proxy/logging/LogStandalone.cc | 15 +- src/proxy/logging/LogUtils.cc | 2 - .../proxy/unit_tests}/CMakeLists.txt | 23 +- src/proxy/unit_tests/main.cc | 51 ++ src/{tscore/Random.cc => proxy/unit_tests/stub.cc} | 9 +- src/proxy/unit_tests/test_ParentHashConfig.cc | 62 ++ src/records/CMakeLists.txt | 4 +- src/records/P_RecCore.cc | 153 +++- src/records/RecCore.cc | 48 +- src/records/RecRawStats.cc | 2 +- src/records/RecUtils.cc | 10 +- src/records/RecordsConfig.cc | 12 +- src/records/RecordsConfigUtils.cc | 4 - src/records/test_RecordsConfig.cc | 55 -- src/records/unit_tests/test_RecRegister.cc | 89 ++ src/records/unit_tests/unit_test_main.cc | 6 +- src/traffic_cache_tool/CacheDefs.h | 10 +- src/traffic_ctl/CtrlCommands.cc | 22 + src/traffic_ctl/CtrlCommands.h | 11 + src/traffic_ctl/CtrlPrinters.cc | 7 +- src/traffic_ctl/CtrlPrinters.h | 8 + src/traffic_ctl/jsonrpc/CtrlRPCRequests.h | 12 + src/traffic_ctl/traffic_ctl.cc | 124 +-- src/traffic_server/RpcAdminPubHandlers.cc | 5 + src/traffic_server/SocksProxy.cc | 32 +- src/traffic_server/traffic_server.cc | 32 +- src/tscore/ArgParser.cc | 280 +++++- src/tscore/CMakeLists.txt | 8 +- src/tscore/Diags.cc | 4 +- src/tscore/Extendible.cc | 165 ---- src/tscore/HashSip.cc | 141 --- src/tscore/Random.cc | 2 +- src/tscore/Regression.cc | 10 +- src/tscore/unit_tests/test_AcidPtr.cc | 164 ---- src/tscore/unit_tests/test_ArgParser_MutexGroup.cc | 215 +++++ src/tscore/unit_tests/test_Extendible.cc | 520 ----------- src/tscore/unit_tests/test_HashAlgorithms.cc | 155 ++++ src/tscore/unit_tests/test_Random.cc | 38 + src/tsutil/Metrics.cc | 30 + src/tsutil/Regex.cc | 158 +++- src/tsutil/unit_tests/test_Regex.cc | 651 +++++++++++++- tests/CMakeLists.txt | 8 +- tests/Pipfile | 1 - tests/autest.sh.in | 2 +- tests/gold_tests/autest-site/ats_replay.test.ext | 190 ++++ .../autest-site/verifier_client.test.ext | 30 +- tests/gold_tests/cache/alternate-caching.test.py | 27 +- tests/gold_tests/cache/background_fill.test.py | 3 +- tests/gold_tests/cache/cache-auth.test.py | 91 +- tests/gold_tests/cache/cache-control.test.py | 360 +------- tests/gold_tests/cache/cache-cookie.test.py | 221 +---- .../gold_tests/cache/cache-range-response.test.py | 18 +- .../gold_tests/cache/cache-request-method.test.py | 80 +- tests/gold_tests/cache/conditional-get-hit.test.py | 17 +- .../cache/gold/cache_and_req_body-hit.gold | 10 - .../cache/gold/cache_and_req_body-miss.gold | 10 - tests/gold_tests/cache/gold/cache_hit_stale.gold | 10 - tests/gold_tests/cache/gold/cache_no_cache.gold | 12 - tests/gold_tests/cache/gold/cache_no_cc.gold | 9 - .../cache/gold/two_alternates_evicted.gold | 4 +- tests/gold_tests/cache/negative-caching.test.py | 91 +- .../gold_tests/cache/negative-revalidating.test.py | 79 +- tests/gold_tests/cache/proxy_serve_stale.test.py | 49 +- .../replay/alternate-caching-update-size.yaml | 31 + .../cache/replay/auth-default.replay.yaml | 68 -- .../cache/replay/auth-ignored.replay.yaml | 67 -- .../cache/replay/cache-control-basic.replay.yaml | 218 +++++ .../cache/replay/cache-control-max-age.replay.yaml | 29 + .../cache/replay/cache-control-pragma.replay.yaml | 26 + .../replay/cache-control-s-maxage.replay.yaml | 27 + .../cache/replay/cache-range-response.replay.yaml | 28 + .../cache/replay/conditional-get-cache-hit.yaml | 26 + .../cookie-all-but-text-with-excp.replay.yaml | 28 + .../cache/replay/cookie-all-but-text.replay.yaml | 27 + .../cache/replay/cookie-bypass-cache.replay.yaml | 27 + .../cache/replay/cookie-cache-img-only.replay.yaml | 27 + .../cache/replay/cookie-default.replay.yaml | 27 +- .../cache/replay/head_with_get_cached.replay.yaml | 27 +- .../cache/replay/ignore_authentication.replay.yaml | 158 ++++ .../replay/negative-caching-customized.replay.yaml | 28 + .../replay/negative-caching-default.replay.yaml | 27 + .../replay/negative-caching-disabled.replay.yaml | 27 + ...l => negative-caching-ttl-in-cache.replay.yaml} | 72 +- .../negative-revalidating-disabled.replay.yaml | 29 + .../negative-revalidating-enabled.replay.yaml | 151 +++- .../replay/negative-revalidating-list.replay.yaml | 35 +- .../post_with_post_caching_disabled.replay.yaml | 29 + .../post_with_post_caching_enabled.replay.yaml | 28 + .../post_with_post_caching_override.replay.yaml | 113 +++ .../cache/replay/proxy_serve_stale.replay.yaml | 32 + .../request-cache-control-default.replay.yaml | 26 + .../request-cache-control-honor-client.replay.yaml | 36 + .../response-cache-control-default.replay.yaml | 34 + .../response-cache-control-ignored.replay.yaml | 35 + .../cache/replay/varied_transactions.replay.yaml | 31 + tests/gold_tests/cache/vary-handling.test.py | 22 +- .../chunked_encoding/bad_chunked_encoding.test.py | 12 +- .../per_client_connection_max.test.py | 6 +- tests/gold_tests/connect/connect.test.py | 6 +- tests/gold_tests/h2/h2get_with_body.test.py | 6 +- tests/gold_tests/h2/http2_close_connection.test.py | 6 +- tests/gold_tests/h2/trickle_client.py | 7 +- tests/gold_tests/h2/trickle_server.py | 8 +- .../gold_tests/headers/gold/accept_webp_cache.gold | 2 +- .../headers/invalid_range_header.test.py | 3 +- .../headers/normalized_ae_match_vary_cache.test.py | 31 + .../normalized_ae_varied_transactions.replay.yaml | 59 +- tests/gold_tests/lib/ats_autest.py | 153 ++++ .../access_control/access_control.test.py | 6 +- .../pluginTest/certifier/certifier.test.py | 12 +- .../compress/compress-content-type-params.test.py | 3 +- .../pluginTest/compress/compress-range.test.py | 3 +- .../disable_pristine_host_hdr_config_false.txt | 10 + .../disable_pristine_host_hdr_config_true.txt | 11 + .../cookie_remap/disable_pristine_host_hdr.test.py | 127 +++ .../disable_pristine_host_hdr_false.replay.yaml | 80 ++ .../disable_pristine_host_hdr_true.replay.yaml | 82 ++ .../pluginTest/header_rewrite/gold/cond-elif.gold | 11 - .../pluginTest/header_rewrite/gold/ext-sets.gold | 11 - .../header_rewrite/gold/header_rewrite-303.gold | 14 - .../header_rewrite/gold/header_rewrite-502.gold | 5 - .../header_rewrite/gold/header_rewrite-client.gold | 14 - .../gold/header_rewrite-l_value.gold | 16 - .../gold/header_rewrite_cond_cache.gold | 57 -- .../gold/header_rewrite_cond_method.gold | 8 - .../gold/header_rewrite_cond_ssn_txn_count.gold | 71 -- .../gold/header_rewrite_effective_address.gold | 7 - .../header_rewrite/gold/set-redirect.gold | 8 - .../header_rewrite/header_rewrite.test.py | 95 -- .../header_rewrite_bundle.replay.yaml | 996 +++++++++++++++++++++ .../header_rewrite/header_rewrite_bundle.test.py} | 17 +- .../header_rewrite_cond_cache.test.py | 67 -- .../header_rewrite_cond_method.test.py | 73 -- .../header_rewrite_cond_ssn_txn_count.test.py | 101 --- .../header_rewrite_effective_address.test.py | 56 -- .../header_rewrite/header_rewrite_l_value.test.py | 60 -- .../header_rewrite/header_rewrite_url.test.py | 112 --- .../rules/{rule.conf => implicit_hook.conf} | 19 +- .../rules/{rule.conf => nested_ifs.conf} | 33 +- ...ule_effective_address.conf => regex_tests.conf} | 13 +- .../pluginTest/header_rewrite/rules/rule.conf | 1 + .../header_rewrite/rules/rule_client.conf | 2 +- .../header_rewrite/rules/rule_cond_method.conf | 2 +- .../rules/rule_effective_address.conf | 3 +- .../{rule_l_value.conf => rule_empty_body.conf} | 7 +- .../header_rewrite/rules/rule_l_value.conf | 2 + ...rule_l_value.conf => rule_set_body_status.conf} | 7 +- .../ja3_fingerprint/ja3_fingerprint.test.py | 6 +- .../pluginTest/lua/gold/lua_proxy_protocol.gold | 1 + .../pluginTest/lua/lua_proxy_protocol.test.py | 79 ++ .../pluginTest/lua/lua_verified_addr.test.py | 79 ++ tests/gold_tests/pluginTest/lua/proxy_protocol.lua | 62 ++ tests/gold_tests/pluginTest/lua/verified_addr.lua | 87 ++ .../gold/origin_server_auth_parsing_ts.gold | 2 +- ...ld => origin_server_auth_parsing_ts_uds 2.gold} | 0 .../gold/origin_server_auth_parsing_ts_uds.gold | 2 +- .../polite_hook_wait/polite_hook_wait.cc | 20 +- .../pluginTest/prefetch/prefetch_cmcd0.gold | 4 +- .../pluginTest/prefetch/prefetch_cmcd1.gold | 4 +- .../pluginTest/regex_remap/regex_remap.test.py | 18 +- .../regex_remap/replay/yts-2819.replay.json | 74 ++ .../regex_revalidate/regex_revalidate.test.py | 1 - .../pluginTest/slice/gold/slice_crr_ident.gold | 6 +- .../stale_response/stale_response.test.py | 3 +- .../pluginTest/statichit/statichit.test.py | 2 +- .../strategies/strategies_plugins.test.py | 411 +++++++++ .../pluginTest/traffic_dump/traffic_dump.test.py | 3 +- .../traffic_dump/traffic_dump_http3.test.py | 6 +- .../traffic_dump_response_body.test.py | 3 +- .../transform/transaction_data_sink.test.py | 6 +- tests/gold_tests/pluginTest/url_sig/url_sig.gold | 4 + .../gold_tests/pluginTest/url_sig/url_sig.test.py | 202 +++-- .../proxy_protocol/proxy_protocol.test.py | 6 +- tests/gold_tests/remap/remap_reload.test.py | 42 +- .../tls_check_dual_cert_selection_plugin.test.py | 18 +- .../traffic_ctl/traffic_ctl_server_output.test.py | 13 +- .../traffic_ctl/traffic_ctl_test_utils.py | 68 +- tests/gold_tests/url/uri.test.py | 2 +- tools/autopep8.sh | 107 --- tools/benchmark/CMakeLists.txt | 5 +- tools/benchmark/benchmark_EventSystem.cc | 7 +- tools/benchmark/benchmark_FreeList.cc | 3 +- tools/benchmark/benchmark_ProxyAllocator.cc | 1 + tools/benchmark/benchmark_Random.cc | 101 +++ tools/benchmark/benchmark_SharedMutex.cc | 3 +- tools/git/pre-commit | 26 + tools/hrw4u/grammar/hrw4u.g4 | 6 +- tools/hrw4u/grammar/u4wrh.g4 | 48 +- tools/hrw4u/pyproject.toml | 2 +- tools/hrw4u/scripts/testcase.py | 71 +- tools/hrw4u/src/common.py | 1 + tools/hrw4u/src/generators.py | 20 +- tools/hrw4u/src/hrw_symbols.py | 28 +- tools/hrw4u/src/hrw_visitor.py | 55 +- tools/hrw4u/src/kg_visitor.py | 33 +- tools/hrw4u/src/lsp/completions.py | 16 +- tools/hrw4u/src/lsp/hover.py | 43 +- tools/hrw4u/src/suggestions.py | 9 +- tools/hrw4u/src/symbols.py | 107 ++- tools/hrw4u/src/symbols_base.py | 22 +- tools/hrw4u/src/tables.py | 350 ++------ tools/hrw4u/src/types.py | 82 +- tools/hrw4u/src/visitor.py | 36 +- tools/hrw4u/tests/data/conds/nested-ifs.ast.txt | 1 + tools/hrw4u/tests/data/conds/nested-ifs.input.txt | 27 + tools/hrw4u/tests/data/conds/nested-ifs.output.txt | 27 + tools/hrw4u/tests/data/hooks/remap.ast.txt | 2 +- tools/hrw4u/tests/data/hooks/remap.input.txt | 2 + tools/hrw4u/tests/data/hooks/remap.output.txt | 2 + tools/hrw4u/tests/data/ops/exceptions.txt | 2 + .../data/ops/http_cntl_invalid_bool.fail.error.txt | 4 +- .../data/ops/http_cntl_quoted_bool.fail.error.txt | 4 +- .../tests/data/ops/http_cntl_valid_bools.ast.txt | 2 +- .../data/ops/http_cntl_valid_bools.output.txt | 2 +- tools/hrw4u/tests/data/ops/qsa.output.txt | 2 +- .../data/ops/skip_remap_quoted_bool.fail.error.txt | 4 +- tools/hrw4u/tests/data/vars/exceptions.txt | 5 + tools/hrw4u/tests/data/vars/explicit_slots.ast.txt | 1 + .../hrw4u/tests/data/vars/explicit_slots.input.txt | 15 + .../tests/data/vars/explicit_slots.output.txt | 3 + .../tests/data/vars/slot_conflict.fail.error.txt | 3 + .../tests/data/vars/slot_conflict.fail.input.txt | 8 + .../tests/data/vars/vars_count.fail.error.txt | 2 +- tools/whitespace-format.sh | 68 ++ 434 files changed, 14677 insertions(+), 9065 deletions(-)
