Created
March 21, 2018 00:01
-
-
Save guid-empty/d361ac845480fb8ce5f9a1f704baac54 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
String nameOf(dynamic model, dynamic resolved) => (resolved as SymbolResolvedValue).name; | |
SymbolResolvedValue resolve(dynamic model, dynamic resolved) => resolved as SymbolResolvedValue; | |
Symbol symbolOf(dynamic model, dynamic resolved) => (resolved as SymbolResolvedValue).symbol; | |
class SymbolResolvedValue { | |
String name; | |
Symbol symbol; | |
SymbolResolvedValue(this.name, this.symbol); | |
} | |
void main() { | |
// codecomplete должен помочь нам избежать ошибок и сопоставить сгенерерованный символ нашему полю (из generic или лямбды) | |
// чтобы уметь сгенерировать символы в контексте использования, мы должны иметь рабочий код с обращением к конкретному полю нашей модели, | |
// и по такому обращению однозначно вернуть символ | |
// это означает, что у нас в любом случае должно быть гдето определенно соответствие между этим конкретным обращением (ключ) | |
// с соответствующим сгенерированным кодом | |
print(nameOf((TempTask t) => t.attachments, $model.taskNames.title)); //~!!!! потенциально можем ошибиться | |
print(symbolOf((TempTask t) => t.attachments, $model.taskNames.title)); //~!!!! потенциально можем ошибиться | |
print(resolve((TempTask t) => t.attachments, $model.taskNames.title).symbol); //~!!!! потенциально можем ошибиться | |
print(resolve((TempFolder t) => t.parentFolders, $model.folderNames.parentFolders).symbol); //~!!!! потенциально можем ошибиться | |
} | |
class $folderNames { | |
SymbolResolvedValue get parentFolders => new SymbolResolvedValue('parentFolders', #parentFolders); | |
} | |
/// | |
/// GENERATED CODE, DO NOT MODIFY IT BY HANDS | |
/// | |
class $model<T> { | |
static $taskNames taskNames = new $taskNames(); | |
static $folderNames folderNames = new $folderNames(); | |
} | |
class $taskNames { | |
SymbolResolvedValue get title => new SymbolResolvedValue('title', #title); | |
} | |
class TempFolder { | |
String parentFolders; | |
} | |
class TempTask { | |
String title; | |
String parent; | |
String attachments; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment