chakra-core/ChakraCore

Chakra failed to build with MSVC + permissive- on windows

Open

#4.902 aberto em 29 de mar. de 2018

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)JavaScript (1.374 forks)batch import
Codebase Qualityhelp wanted

Métricas do repositório

Stars
 (9.000 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

Chakra failed with error C3861 when build with permissive- on Windows, I use latest source on master branch. Could you please help take a look at this? Noted that this issue only found when compiles with unreleased vctoolset, that next release of MSVC will have this behavior. You can repro this issue as the steps below:

  1. git clone -c core.autocrlf=true https://github.com/microsoft/ChakraCore D:\Chakra\src
  2. Open a clean x86 prompt and browse to D:\Chakra\src
  3. set CL=-wd4471 /permissive-
  4. msbuild /m /p:Platform=x86 /p:Configuration=Test /p:WindowsTargetPlatformVersion=10.0.16299.0 Build\Chakra.Core.sln /t:Rebuild

Failure like:

"D:\Chakra\src\Build\Chakra.Core.sln" (Rebuild target) (1) -> "D:\Chakra\src\Build..\bin\ChakraCore\ChakraCore.vcxproj.metaproj" (Rebuild target) (2) -> "D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj" (Rebuild target) (6) -> d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: return __super::Add(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: return __super::AddNew(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: return __super::Item(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: return ContainsKey(ValueToKey<TKey, TElement>::ToKey(element)); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: return __super::Remove(ValueToKey<TKey, TElement>::ToKey(element)); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj]

"D:\Chakra\src\Build\Chakra.Core.sln" (Rebuild target) (1) -> "D:\Chakra\src\Build..\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj.metaproj" (Rebuild target) (10) -> "D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj" (Rebuild target) (11) -> d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: 'ClearValue': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: ClearValue::Clear(&this->value); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: TKey Key() const { return ValueToKey<TKey, TValue>::ToKey(this->value); } [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: 'IsConcurrentSweepState': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: return IsFreeListAllocMode() && recycler->IsConcurrentSweepState(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: 'CreateWeakReferenceHandle': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: weakRef = recycler->CreateWeakReferenceHandle((T*)this); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: 'FindHeapBlock': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: entry->strongRefHeapBlock = recycler->FindHeapBlock(strongReference); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: 'FindHeapBlock': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: HeapBlock * weakRefHeapBlock = recycler->FindHeapBlock(entry); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: 'values': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: return values[i]; [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: 'values': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: return values[i]; [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: 'ULongMult': undeclared identifier [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: if (FAILED(ULongMult(m_cchMax, sizeof(OLECHAR) * 2, &cbNew))) [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: 'ULongMult': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: if (FAILED(ULongMult(m_cchMax, sizeof(OLECHAR) * 2, &cbNew))) [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: 'GetPropertyRecord': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: str->GetPropertyRecord(&propRecord); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: 'GetString': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: return Equals(str->GetString(), str->GetLength()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: 'GetLength': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: return Equals(str->GetString(), str->GetLength()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: 'CrossSiteObject': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: BOOL ret = VirtualTableInfo<CrossSiteObject>::HasVirtualTable(obj); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: 'GetLibrary': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: *propertyValue = IsMissing ? requestContext->GetLibrary()->GetFalse() : requestContext->GetLibrary()->GetTrue(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: 'GetLibrary': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: *propertyValue = IsMissing ? requestContext->GetLibrary()->GetFalse() : requestContext->GetLibrary()->GetTrue(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: 'GetSlot': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: fn(GetSlot[i]); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: 'InvalidateStoreFieldCaches': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: scriptContext->InvalidateStoreFieldCaches(propertyId); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: 'FindPropertyRecord': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: scriptContext->FindPropertyRecord(value, N - 1, &propertyRecord); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: 'GetPropertyString': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: return scriptContext->GetPropertyString(propertyRecord->GetPropertyId()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: 'GetRecycler': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: return LiteralString::New(stringTypeStatic, value, N - 1 /don't include terminating NUL/, scriptContext->GetRecycler()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj]

Guia do colaborador