Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Косячок с модификатором Знач в реализации (число прочтений - 7692 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Косячок с модификатором Знач в реализации
04. Мая 2008 :: 13:01
Печать  
Для методов с неопределенным количеством параметров, если обявление не совпадает с реализацией, то поведение становится немного необычным.  При вызове метода никто не ругается, но сам метод не получает доп. параметров.  Ошибка из разряда неуловимых.

Хедер:
Код
Выбрать все
class EllipseTest = EllipseTest.txt
{
	void TheTest_Wrong(String p1, ...);
	void TheTest_Right(String p1, ...);
}; 


Реализация:
Код
Выбрать все
Функция Сам(Конт) Возврат Конт; КонецФункции //:Контекст


Процедура TheTest_Wrong(Знач П1) Экспорт
	Сам = Сам(Контекст);

	Сообщить("П1 = "+П1);
	сзПараметры = Сам.ПолучитьСписокПараметров("TheTest_Wrong");

	Сообщить("Доп. параметров: "+сзПараметры.РазмерСписка());
КонецПроцедуры


Процедура TheTest_Right(П1) Экспорт
	Сам = Сам(Контекст);

	Сообщить("П1 = "+П1);
	сзПараметры = Сам.ПолучитьСписокПараметров("TheTest_Right");

	Сообщить("Доп. параметров: "+сзПараметры.РазмерСписка());
КонецПроцедуры 


Вызов:
Код
Выбрать все
роцедура Тест()
	EllipseTest = СоздатьОбъект("EllipseTest");

	Сообщить("TheTest_Right:");
	EllipseTest.TheTest_Right("п1", "п2", "п3");

	Сообщить("
	|TheTest_Wrong:");
	EllipseTest.TheTest_Wrong("п1", "п2", "п3");
КонецПроцедуры 



Результат:
Цитата:
TheTest_Right:
П1 = п1
Доп. параметров: 2

TheTest_Wrong:
П1 = п1
Доп. параметров: 0


В какой момент сменилось поведение пока не понятно, но точно могу сказать что так не было в версии 2.5 от 14.03.08, и в icpp от 28.03.08
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #1 - 04. Мая 2008 :: 13:03
Печать  
Леш, создай баг, плиз.
Я кое-что менял по Знач, но вроде бы пораньше, чем названные тобой даты.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #2 - 04. Мая 2008 :: 13:04
Печать  
Вот мои правки
Цитата:
2008-03-21      artbear
     * Source/ComponentClass.cpp 1.120:
     * Source/ComponentClass.h 1.71:
           [bug 3658]
           рефакторинг кода по получению данных из модуля для методов с параметрами по значению

     * Source/ComponentClass.cpp 1.119:
     * Source/MetaDataOfClasses.cpp 1.16:
     * Source/MetaDataOfClasses.h 1.8:
           [bug 3658]
           Исправлен баг - Для публичного метода класса, не описанного в prm-файле, а
           описанного только в модуле класса, не работает передача
           параметров по значению, а работает только по ссылке

     * Testing/UnitTests/OOP/defcls.prm 1.38:
     * Testing/UnitTests/OOP/ООПТесты.txt 1.56:
     * Testing/UnitTests/OOP/Предок.txt 1.11:
           [bug 3658]
           тесты для проверки параметров, переданных по значению
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #3 - 04. Мая 2008 :: 13:05
Печать  
Ну т.е. все-таки наверняка виноват мой код Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #4 - 04. Мая 2008 :: 13:12
Печать  
http://www.1cpp.ru/bugs/show_bug.cgi?id=3798

там ещё класс с обработкой приложен
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #5 - 04. Мая 2008 :: 13:16
Печать  
ADirks писал(а) 04. Мая 2008 :: 13:12:
http://www.1cpp.ru/bugs/show_bug.cgi?id=3798

там ещё класс с обработкой приложен

Поздно, я уже тест в конфу тестирования 1С++ нарисовал Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #6 - 04. Мая 2008 :: 13:22
Печать  
Да, баг подтверждаю.
ЗЫ а ведь у меня уже были подобные подозрения, потому что в исходниках мутный код для этого момента, а мои шаловливые ручки до него еще не добрались.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #7 - 05. Мая 2008 :: 13:14
Печать  
Кстати, Алексей, а какое поведение ты считаешь верным?
Чтобы бралось значение из прм-файла, т.е. без Знач? или выдавало ошибку? или еще как?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #8 - 06. Мая 2008 :: 06:09
Печать  
artbear писал(а) 05. Мая 2008 :: 13:14:
Кстати, Алексей, а какое поведение ты считаешь верным?
Чтобы бралось значение из прм-файла, т.е. без Знач? или выдавало ошибку? или еще как?

А вот нехило бы, чтобы именно ошибка выдавалась!  Т.е., если у нас есть и описание в хедере и модификаторы в реализации, то значит произошла путаница, кодер в процессе борьбы с кодом оставил неприкрытыми фланги. А тут ему голос свыше:  ТЫ ЛАЖАНУЛСЯ!
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #9 - 21. Мая 2008 :: 12:03
Печать  
Я так понял баг еще не пофиксен?
Блин! Я 2 часа потратил чтобы понять почему вдруг твой класс "Привязки" перестал работать Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #10 - 21. Мая 2008 :: 12:04
Печать  
Сижу, разбираюсь, мозги дымятся, целый день сижу, не могу исправить Печаль - код путаный Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #11 - 21. Мая 2008 :: 13:37
Печать  
artbear писал(а) 21. Мая 2008 :: 12:04:
Сижу, разбираюсь, мозги дымятся, целый день сижу, не могу исправить Печаль - код путаный Печаль


Понимаю и сочуствую. Особенно если код чужой - это пипец! Хотя иногда и свой 2-3-х летней давности как глянешь.....!  Смех
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #12 - 23. Мая 2008 :: 08:21
Печать  
Читаем багзиллу, там результаты работы с багом.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #13 - 26. Мая 2008 :: 06:11
Печать  
Ошибка исправлена.

Цитата:
[+] в случае различия параметров Знач в prm-файле и модуле класса
при компиляции класса выдается сообщение об ошибке,
а в случае вызова подобного метода выдается исключение вместо
вызова.


Будет в очередной сборке icpp.
В 2.5 исправлять не планирую.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #14 - 26. Мая 2008 :: 10:19
Печать  
artbear писал(а) 26. Мая 2008 :: 06:11:
В 2.5 исправлять не планирую.

Почему?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать