Ответ 1
Ошибка, которую вы, ребята, получаете из библиотеки Jurassic, которая используется Chirpy Add-In.
Я быстро просмотрел источники Chirpy и Jurassic, и я нашел точное место, где исключено исключение, и вызывает описанную проблему.
В источниках Jurassic перейдите в каталог Jurassic\Compiler\Binders
и откройте файл JSBinder.cs
. Проблемы возникают в методе protected override void GenerateStub(ILGenerator generator, int argumentCount)
, который сам используется для создания другого метода... yadayadayada. Это довольно сложно.
В любом случае. Вот код из этого файла, который отвечает за ошибки, которые вы получаете:
// Line 156 (Change Set df266524321d)
// Convert to the target type.
EmitTypeConversion(generator, typeof(object), argument.Type);
if (argument.Type != typeof(ObjectInstance) && inheritsFromObjectInstance == true)
{
// EmitConversionToObjectInstance can emit null if the toType is derived from ObjectInstance.
// Therefore, if the value emitted is null it means that the "thisObject" is a type derived
// from ObjectInstance (e.g. FunctionInstance) and the value provided is a different type
// (e.g. ArrayInstance). In this case, throw an exception explaining that the function is
// not generic.
var endOfThrowLabel = generator.CreateLabel();
generator.Duplicate();
generator.BranchIfNotNull(endOfThrowLabel);
generator.LoadArgument(0);
EmitHelpers.EmitThrow(generator, "TypeError", string.Format("The method '{0}' is not generic", binderMethod.Name));
generator.DefineLabelPosition(endOfThrowLabel);
}
Если вы хотите немного углубиться, вы можете взглянуть на Jurassic\Library\Array\ArrayInstance.cs
и Jurassic\Library\Object\ObjectInstance.cs
, где реализован public static string ToStringJS(ScriptEngine engine, object thisObject)
. Также в Chirpy lib файл CSSLint.cs
содержит немного интересных строк кода (места, где Jurassic).
Я должен признать, что я точно не знаю, почему вы получаете "фатальную ошибку" или как проблема может быть исправлена. Это потребует немалых усилий по тестированию/отладке. Кто-нибудь?
Во всяком случае, не вините Resharper! Это отличное программное обеспечение; -)