From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,SPF_HELO_PASS, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [IPv6:2a01:4f8:1c0c:6b10::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 217331F44D for ; Thu, 14 Mar 2024 15:08:34 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; secure) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=arlO/GAX; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=pZTkKfDI; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 85FC4833D6; Thu, 14 Mar 2024 15:08:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1710428906; bh=Yv6XB1oZmQzJnHXz/7xB/mAp1O698X+vsJ8viC6DtEI=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=arlO/GAXKIJTofmlrQ1gZ7U1w52eCqvzXMvGM7igeoMPM4mQUTyhO7pOCsJhLxdG/ QVGwuozd5kF5XRfK6dzT6Ek/XSm6shXwrP6I7Bn8I3CyNTHarAc/eZaAZre9N+eT0e elh9hQzUJfK7x7RJdiVctsAQJvwkzrDibCnnZwlo= Received: from s.csnrwnwx.outbound-mail.sendgrid.net (s.csnrwnwx.outbound-mail.sendgrid.net [198.37.146.154]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 5ACD2833C9 for ; Thu, 14 Mar 2024 15:08:23 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=pZTkKfDI; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc:content-type:from:subject:to; s=s1; bh=XfSoTGHHNn2vDW2S5zsMKj+3/bUD8NR0wx04oDdxAKA=; b=pZTkKfDIH7cAXd7FUr5iXiqixmWM+BzivLp7Ra64l0fPPk2NBhh8+CHnjdYou4/QZ39b EZVuFAbrwHykaAj3LtPANSezq/oWVazl6GfKIhvpdM6ywohuZuNYZptHubh/n5ezfRFdYx 0ZZauKewDWEc5Eig/hO6klSpXk+kyO3Y3JkK02MgDAZMQXmKXfEyzl6dJ/NnIVdQcXs4V7 cYHQ1tCP00rHZA1UMYuS3t5u7YxLLRguboGWO+oERFAUGxHh6pX9ba307c6eLsRvRhpleT u/AocVv8NNBTravFef7kuBf7HOOHMmygNvLtG5ZRWhIMithx/ZCNZKDCMD0TaReQ== Received: by filterdrecv-c57655446-6ckdw with SMTP id filterdrecv-c57655446-6ckdw-1-65F312E5-10 2024-03-14 15:08:21.629451909 +0000 UTC m=+836037.698234871 Received: from herokuapp.com (unknown) by geopod-ismtpd-17 (SG) with ESMTP id HpC5NkO1RsSI22BnWUPMUw for ; Thu, 14 Mar 2024 15:08:21.474 +0000 (UTC) Date: Thu, 14 Mar 2024 15:08:21 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 20335 X-Redmine-Issue-Author: byroot X-Redmine-Issue-Priority: Normal X-Redmine-Sender: byroot X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 93746 X-SG-EID: =?us-ascii?Q?u001=2EKmNZ1u3n1vIpO8NNTdp+Q9c0ai7potxbEDLMO7SOJO=2F4KkRUz0d23466m?= =?us-ascii?Q?naiq=2F5fmA4hb60MdRMUAwHZnjIWVFu=2FrqiBOz5c?= =?us-ascii?Q?nOvkBudsSTjAvgHqTGQ3v+dK1fkfSvPgQ7jnBtW?= =?us-ascii?Q?sfnyiQGWJ5OPfttWrrEYAE068cpFvjVbbK9ZPfw?= =?us-ascii?Q?moG+h5K4MZ5NhvvtJowtztIvcYo9VllvjgoOdjF?= =?us-ascii?Q?8eL4Kw0ElxO2726H63dcP2hdH3N+kbzuD5LQamO?= =?us-ascii?Q?uGMlOBlG1uFZIbNAxDuEDSM8lA=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: V3ACIMIFQUVPSXWZMED6AI6RIT3VHIU7 X-Message-ID-Hash: V3ACIMIFQUVPSXWZMED6AI6RIT3VHIU7 X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:117180] [Ruby master Feature#20335] `Thread.each_caller_location` should accept the same arguments as `caller` and `caller_locations` List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "byroot (Jean Boussier) via ruby-core" Cc: "byroot (Jean Boussier)" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Issue #20335 has been updated by byroot (Jean Boussier). > I think omitting the first N frames is useful. Agreed, that's the only one I want. The reason I started the issue by asking for the same parameters is purely consistency. Now, if there are valid reasons not to support some (like you exposed), I'm totally fine with deliberately not supporting them. But what I'm trying to say is we should start with the same feature set and then selectively remove the one that may be problematic. So I suppose at that stage the proposal would be: ```ruby Thread.each_caller_location(1) # skip first frame Thread.each_caller_location(1, 20) # skip first frame, yield the next 20 frames Thread.each_caller_location(1..20) # ArgumentError ``` Is that correct? ---------------------------------------- Feature #20335: `Thread.each_caller_location` should accept the same arguments as `caller` and `caller_locations` https://bugs.ruby-lang.org/issues/20335#change-107270 * Author: byroot (Jean Boussier) * Status: Open ---------------------------------------- `Thread.each_caller_location` was added to Ruby 3.2 as part of [Feature #16663] and is a very useful API for emitting warnings with a proper source location and similar use cases. However in many of the cases where I used it, or seen it used, it was needed to skip the first, or a couple frames: Examples: Sorbet: https://github.com/Shopify/sorbet/blob/b27a14c247ace7cabdf0f348bfb11fdf0b7e9ab4/gems/sorbet-runtime/lib/types/private/caller_utils.rb#L6-L18 ```ruby def self.find_caller skiped_first = false Thread.each_caller_location do |loc| unless skiped_first skiped_first = true next end next if loc.path&.start_with?("= 1 frames_to_skip -= 1 next end # snipp... ``` ### Proposal I think it would be very useful if `Thread.each_caller_location` accepted the same arguments as `caller` and `caller_locations`: ```ruby #each_caller_location(start = 1, length = nil) #each_caller_location(range) ``` @jeremyevans0 what do you think? -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/