private void InferenceTypeOfCalledObject(TES5ObjectCall objectCall, TES5MultipleScriptsScope multipleScriptsScope) { ITES5Type inferencableType = objectCall.AccessedObject.TES5Type.NativeType; /* * Check if we have something to inference inside the code, not some static class or method call return */ if (objectCall.AccessedObject.ReferencesTo != null) { //this is not "exactly" nice solution, but its enough. For now. ITES5Type inferenceType = TES5InheritanceGraphAnalyzer.FindTypeByMethod(objectCall); if (inferencableType == null) { throw new ConversionException("Cannot inference a null type"); } if (inferencableType == inferenceType) { return; //We already have the good type. } if (this.InferenceType(objectCall.AccessedObject.ReferencesTo, inferenceType, multipleScriptsScope)) { return; } } }
private void InferenceTypeOfCalledObject(TES5ObjectCall objectCall) { /* * Check if we have something to inference inside the code, not some static class or method call return */ if (objectCall.AccessedObject.ReferencesTo == null) { return; } ITES5Type inferencableType = objectCall.AccessedObject.TES5Type.NativeType; //this is not "exactly" nice solution, but its enough. For now. TES5BasicType inferenceType = TES5InheritanceGraphAnalyzer.FindTypeByMethod(objectCall, esmAnalyzer); if (TES5InheritanceGraphAnalyzer.IsTypeOrExtendsType(inferencableType, inferenceType)) { return; //We already have the good type. } this.InferenceType(objectCall.AccessedObject.ReferencesTo, inferenceType); }