[Scons-users] Module Scons.Util
Bill Deegan
bill at baddogconsulting.com
Sun Oct 1 18:51:02 EDT 2017
Pull request with fix:
https://github.com/SConsProject/scons/pull/6
On Sun, Oct 1, 2017 at 2:16 PM, Bill Deegan <bill at baddogconsulting.com>
wrote:
> Do you have a stack trace where that bit of logic is called?
>
> Ideally I'd figure out when/where it's getting exercised and make sure any
> change doesn't break anything useful.
>
> I'm guessing not tests are properly testing this segment of code..
>
> On Sun, Oct 1, 2017 at 1:37 PM, Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> James,
>>
>> You responded to the digest message rather than this thread:
>>
>> No you did not quite get that Bill
>>> The elif clearly limits the type of s at this point to a duck type of
>>> sequence
>>> then l is initialized to an empty sequence type
>>> then in the for loop for each element of s the function recursively is
>>> called on the element returning a string which is appended to l
>>> l is then discarded on the return of the join of s with a blank between
>>> each. This assumes all the elements of s can be converted to a string type
>>> for the join.
>>> Thus l is unneeded and so is the for loop over s, which merely appends
>>> everything to l.
>>>
>>
>> Gotcha. I see that now.
>> Strange, let me look at the history and see if is a bad merge, regardless
>> needs to be cleaned up.
>>
>> -Bill
>>
>> On Sun, Oct 1, 2017 at 10:27 AM, Bill Deegan <bill at baddogconsulting.com>
>> wrote:
>>
>>> I think you're mistaken.
>>> If s is a UserString or not a Sequence or BaseStringTypes then it's
>>> actually doing something.
>>>
>>> It could probably be rewritten as:
>>>
>>> return ''.join([to_String_for_subst(e) for e in s])
>>>
>>>
>>>
>>> On Sun, Oct 1, 2017 at 10:16 AM, James Rinkevich <rinkevichjm at gmail.com>
>>> wrote:
>>>
>>>> in this function
>>>> def to_String_for_subst(s,
>>>> isinstance=isinstance, str=str,
>>>> to_String=to_String,
>>>> BaseStringTypes=BaseStringTypes,
>>>> SequenceTypes=SequenceTypes,
>>>> UserString=UserString):
>>>>
>>>> # Note that the test cases are sorted by order of probability.
>>>> if isinstance(s, BaseStringTypes):
>>>> return s
>>>> elif isinstance(s, SequenceTypes):
>>>> l = []
>>>> for e in s:
>>>> l.append(to_String_for_subst(e))
>>>> return ' '.join( s )
>>>> elif isinstance(s, UserString):
>>>> # s.data can only be either a unicode or a regular
>>>> # string. Please see the UserString initializer.
>>>> return s.data
>>>> else:
>>>> return str(s)
>>>>
>>>> the lines
>>>> l = []
>>>> for e in s:
>>>> l.append(to_String_for_subst(e))
>>>> have no effect and just waste time, perhaps someone intended the return
>>>> line to be
>>>> return ' '.join( l )
>>>> instead of
>>>> return ' '.join( s )
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Scons-users mailing list
>>>> Scons-users at scons.org
>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20171001/56fad25f/attachment.html>
More information about the Scons-users
mailing list