parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

bug: Приоритет операторов над методами классов...

Sumo 21.11.2015 09:54 / 21.11.2015 10:02

#!./parser3

@main[]
  $t[^test::create[]]

  ^print[value 2]
  ^t.print[value 1]
  ^t.greeting[]

@print[str]
  main: $str


@CLASS
test

@create[]

@greeting[]
  $result[^print[Hello, world!]]

@print[str]
  test: $str
Результат:
    main: value 2
    test: value 1
    main: Hello, world!
Ожидали:
    main: value 2
    test: value 1
    test: Hello, world!
Проверил на 3.4.3 и 3.4.4RC — результат одинаковый. Кажется, что такой приоритет вызова неправильный и приводит к очень неприятным ошибкам. Сначала надо искать метод в классе, а потом уже звать оператор, иначе все вызовы метод в классе надо переписывать через ^self.method[].